From 02325551ae84b031f409b0b7f143a5d9ed473a15 Mon Sep 17 00:00:00 2001 From: TPReal Date: Mon, 13 Nov 2023 10:08:38 +0100 Subject: [PATCH 1/2] FZ-84 Moved navigation text to translations. Other minor changes. --- .../tquery_filters/BoolFilterControl.tsx | 2 +- resources/js/components/utils/lang.ts | 5 +- .../js/data-access/memo-api/attributes.ts | 6 +- .../js/data-access/memo-api/dictionaries.ts | 8 +- .../root/components/header/UserInfo.tsx | 2 +- .../features/root/components/header/index.ts | 2 - .../features/root/components/navbar/index.ts | 2 - resources/js/features/root/layout/Header.tsx | 7 +- resources/js/features/root/layout/Navbar.tsx | 158 ++++++++++-------- resources/js/features/root/layout/index.ts | 6 - .../js/features/root/pages/Root.page.tsx | 6 +- resources/lang/pl_PL/navigation.yml | 20 +++ 12 files changed, 131 insertions(+), 93 deletions(-) delete mode 100644 resources/js/features/root/components/header/index.ts delete mode 100644 resources/js/features/root/components/navbar/index.ts delete mode 100644 resources/js/features/root/layout/index.ts create mode 100644 resources/lang/pl_PL/navigation.yml diff --git a/resources/js/components/ui/Table/tquery_filters/BoolFilterControl.tsx b/resources/js/components/ui/Table/tquery_filters/BoolFilterControl.tsx index c5f3153cf..63a63a7c9 100644 --- a/resources/js/components/ui/Table/tquery_filters/BoolFilterControl.tsx +++ b/resources/js/components/ui/Table/tquery_filters/BoolFilterControl.tsx @@ -1,7 +1,7 @@ +import {Select, SelectItem} from "components/ui/form/Select"; import {useLangFunc} from "components/utils"; import {BoolColumnFilter, NullColumnFilter} from "data-access/memo-api/tquery/types"; import {createComputed, createMemo, createSignal} from "solid-js"; -import {Select, SelectItem} from "../../form/Select"; import s from "./ColumnFilterController.module.scss"; import {makeSelectItem} from "./select_items"; import {FilterControl} from "./types"; diff --git a/resources/js/components/utils/lang.ts b/resources/js/components/utils/lang.ts index 1fa43ab06..67407ef7c 100644 --- a/resources/js/components/utils/lang.ts +++ b/resources/js/components/utils/lang.ts @@ -5,7 +5,7 @@ import {TOptions} from "i18next"; * A wrapper for useTransContext with the basic overload options, and with better * types for usage as TSX attributes (no null returned). */ -export function useLangFunc(): LangPrefixFunc { +export function useLangFunc(): LangFunc { const transContext = useTransContext(); if (!transContext) { throw new Error(`Called useLangFunc outside of the provider.`); @@ -24,6 +24,9 @@ export function getLangEntryFunc(func: LangPrefixFunc, key: string): LangEntryFu /** A function for getting the translation values from under a particular key prefix. */ export type LangPrefixFunc = (subKey: string, options?: TOptions) => string; +/** A function for getting the translation values at the top level. */ +export type LangFunc = LangPrefixFunc; + function isLangPrefixParams( params: Parameters | Parameters, ): params is Parameters { diff --git a/resources/js/data-access/memo-api/attributes.ts b/resources/js/data-access/memo-api/attributes.ts index 5789196b4..7329e6a4c 100644 --- a/resources/js/data-access/memo-api/attributes.ts +++ b/resources/js/data-access/memo-api/attributes.ts @@ -1,5 +1,5 @@ import {createQuery} from "@tanstack/solid-query"; -import {LangPrefixFunc, NON_NULLABLE, useLangFunc} from "components/utils"; +import {LangFunc, NON_NULLABLE, useLangFunc} from "components/utils"; import {translationsLoaded} from "i18n_loader"; import {createMemo} from "solid-js"; import {FacilityIdOrGlobal, activeFacilityId} from "state/activeFacilityId.state"; @@ -17,7 +17,7 @@ export class Attributes { readonly byModel: ReadonlyMap, ) {} - static fromResources(t: LangPrefixFunc, resources: AttributeResource[], dictionaries: Dictionaries) { + static fromResources(t: LangFunc, resources: AttributeResource[], dictionaries: Dictionaries) { return Attributes.fromAttributes(resources.map((resource) => Attribute.fromResource(t, resource, dictionaries))); } @@ -71,7 +71,7 @@ export class Attribute { readonly multiple: boolean | undefined, ) {} - static fromResource(t: LangPrefixFunc, resource: AttributeResource, dictionaries: Dictionaries) { + static fromResource(t: LangFunc, resource: AttributeResource, dictionaries: Dictionaries) { return new Attribute( resource, resource.id, diff --git a/resources/js/data-access/memo-api/dictionaries.ts b/resources/js/data-access/memo-api/dictionaries.ts index 918ea18a1..f3c72f8b3 100644 --- a/resources/js/data-access/memo-api/dictionaries.ts +++ b/resources/js/data-access/memo-api/dictionaries.ts @@ -1,5 +1,5 @@ import {createQuery} from "@tanstack/solid-query"; -import {LangPrefixFunc, NON_NULLABLE, useLangFunc} from "components/utils"; +import {LangFunc, NON_NULLABLE, useLangFunc} from "components/utils"; import {translationsLoaded} from "i18n_loader"; import {createMemo} from "solid-js"; import {FacilityIdOrGlobal, activeFacilityId} from "state/activeFacilityId.state"; @@ -19,7 +19,7 @@ export class Dictionaries { readonly byName: ReadonlyMap, ) {} - static fromResources(t: LangPrefixFunc, resources: DictionaryResource[]) { + static fromResources(t: LangFunc, resources: DictionaryResource[]) { return Dictionaries.fromDictionaries(resources.map((resource) => Dictionary.fromResource(t, resource))); } @@ -71,7 +71,7 @@ export class Dictionary { this.activePositions = this.allPositions.filter((position) => !position.resource.isDisabled); } - static fromResource(t: LangPrefixFunc, resource: DictionaryResource) { + static fromResource(t: LangFunc, resource: DictionaryResource) { const isTranslatable = isNameTranslatable(resource.name); return new Dictionary( resource, @@ -106,7 +106,7 @@ export class Position { readonly disabled; constructor( - t: LangPrefixFunc, + t: LangFunc, readonly resource: PositionResource, /** The name of the dictionary, if it's a translatable name. */ readonly dictionaryTranslatableName: string | undefined, diff --git a/resources/js/features/root/components/header/UserInfo.tsx b/resources/js/features/root/components/header/UserInfo.tsx index 66f10fe98..043e813f7 100644 --- a/resources/js/features/root/components/header/UserInfo.tsx +++ b/resources/js/features/root/components/header/UserInfo.tsx @@ -2,7 +2,7 @@ import {createMutation, createQuery} from "@tanstack/solid-query"; import {Button} from "components/ui/Button"; import {DATE_TIME_WITH_WEEKDAY_FORMAT, currentTime, useLangFunc} from "components/utils"; import {User} from "data-access/memo-api/groups"; -import {HeaderSeparator} from "features/root/layout"; +import {HeaderSeparator} from "features/root/layout/HeaderSeparator"; import {PasswordChangeForm} from "features/user-panel/PasswordChange.form"; import {HiOutlineCheckCircle, HiOutlinePower, HiOutlineXCircle} from "solid-icons/hi"; import {TbPassword} from "solid-icons/tb"; diff --git a/resources/js/features/root/components/header/index.ts b/resources/js/features/root/components/header/index.ts deleted file mode 100644 index 4d0db1061..000000000 --- a/resources/js/features/root/components/header/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./FacilityControl"; -export * from "./UserInfo"; diff --git a/resources/js/features/root/components/navbar/index.ts b/resources/js/features/root/components/navbar/index.ts deleted file mode 100644 index c8130c695..000000000 --- a/resources/js/features/root/components/navbar/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./NavigationItem"; -export * from "./NavigationSection"; diff --git a/resources/js/features/root/layout/Header.tsx b/resources/js/features/root/layout/Header.tsx index 94988390c..e8eb850fb 100644 --- a/resources/js/features/root/layout/Header.tsx +++ b/resources/js/features/root/layout/Header.tsx @@ -1,14 +1,13 @@ import {VoidComponent} from "solid-js"; -import {FacilityControl, UserInfo} from "../components/header"; -import {HeaderSeparator} from "./HeaderSeparator"; +import {FacilityControl} from "../components/header/FacilityControl"; +import {UserInfo} from "../components/header/UserInfo"; import s from "./layout.module.scss"; export const Header: VoidComponent = () => { return (
-
- +
); diff --git a/resources/js/features/root/layout/Navbar.tsx b/resources/js/features/root/layout/Navbar.tsx index dba810f86..a6ca7435d 100644 --- a/resources/js/features/root/layout/Navbar.tsx +++ b/resources/js/features/root/layout/Navbar.tsx @@ -1,5 +1,6 @@ +import {Capitalize} from "components/ui/Capitalize"; import {FullLogo} from "components/ui/FullLogo"; -import {cx} from "components/utils"; +import {LangFunc, cx, useLangFunc} from "components/utils"; import { HiOutlineBuildingOffice, HiOutlineCalendarDays, @@ -14,13 +15,15 @@ import { import {RiDevelopmentCodeBoxLine} from "solid-icons/ri"; import {DEV, Show, VoidComponent, createMemo} from "solid-js"; import {useActiveFacility} from "state/activeFacilityId.state"; -import {NavigationItemProps, NavigationSection} from "../components/navbar"; +import {NavigationItemProps} from "../components/navbar/NavigationItem"; +import {NavigationSection} from "../components/navbar/NavigationSection"; import s from "./layout.module.scss"; export const Navbar: VoidComponent = () => { + const t = useLangFunc(); const activeFacility = useActiveFacility(); const facilityUrl = () => activeFacility()?.url; - const sectionItems = createMemo(() => getSectionItems(facilityUrl())); + const sectionItems = createMemo(() => getSectionItems(t, facilityUrl())); return (