fix adding of language

This commit is contained in:
Chris Kruining 2025-01-03 04:56:21 +01:00
parent aadc27262a
commit 4fba9cc23c
No known key found for this signature in database
GPG key ID: EB894A3560CCCAD2
2 changed files with 24 additions and 7 deletions

View file

@ -11,7 +11,7 @@ export interface GridApi {
readonly selection: Accessor<SelectionItem<number, Entry>[]>; readonly selection: Accessor<SelectionItem<number, Entry>[]>;
remove(indices: number[]): void; remove(indices: number[]): void;
addKey(key: string): void; addKey(key: string): void;
addLocale(locale: string): void; // addLocale(locale: string): void;
}; };
const groupBy = (rows: DataSetRowNode<number, Entry>[]) => { const groupBy = (rows: DataSetRowNode<number, Entry>[]) => {
@ -49,6 +49,15 @@ export function Grid(props: { class?: string, rows: Entry[], locales: string[],
const [api, setApi] = createSignal<GridCompApi<Entry>>(); const [api, setApi] = createSignal<GridCompApi<Entry>>();
createEffect(() => {
const r = rows();
const l = locales();
r.mutateEach(({ key, ...rest }) => {
return ({ key, ...Object.fromEntries(l.map(locale => [locale, rest[locale] ?? ''])) });
});
});
createEffect(() => { createEffect(() => {
const r = rows(); const r = rows();
@ -59,9 +68,6 @@ export function Grid(props: { class?: string, rows: Entry[], locales: string[],
addKey(key) { addKey(key) {
r.insert({ key, ...Object.fromEntries(locales().map(l => [l, ''])) }); r.insert({ key, ...Object.fromEntries(locales().map(l => [l, ''])) });
}, },
addLocale(locale) {
r.mutateEach(entry => ({ ...entry, [locale]: '' }));
},
}); });
}); });

View file

@ -74,7 +74,7 @@ const Editor: Component<{ root: FileSystemDirectoryHandle }> = (props) => {
const filesContext = useFiles(); const filesContext = useFiles();
const tabs = createMemo(() => filesContext.files().map(({ key, handle }) => { const tabs = createMemo(() => filesContext.files().map(({ key, handle }) => {
const [api, setApi] = createSignal<GridApi>(); const [api, setApi] = createSignal<(GridApi & { addLocale(locale: string): void })>();
const [entries, setEntries] = createSignal<Entries>(new Map()); const [entries, setEntries] = createSignal<Entries>(new Map());
const [files, setFiles] = createSignal<Map<string, { id: string, handle: FileSystemFileHandle }>>(new Map()); const [files, setFiles] = createSignal<Map<string, { id: string, handle: FileSystemFileHandle }>>(new Map());
@ -379,7 +379,7 @@ const Editor: Component<{ root: FileSystemDirectoryHandle }> = (props) => {
</div>; </div>;
}; };
const Content: Component<{ directory: FileSystemDirectoryHandle, api?: Setter<GridApi | undefined>, entries?: Setter<Entries> }> = (props) => { const Content: Component<{ directory: FileSystemDirectoryHandle, api?: Setter<(GridApi & { addLocale(locale: string): void }) | undefined>, entries?: Setter<Entries> }> = (props) => {
const [entries, setEntries] = createSignal<Entries>(new Map()); const [entries, setEntries] = createSignal<Entries>(new Map());
const [locales, setLocales] = createSignal<string[]>([]); const [locales, setLocales] = createSignal<string[]>([]);
const [rows, setRows] = createSignal<Entry[]>([]); const [rows, setRows] = createSignal<Entry[]>([]);
@ -390,7 +390,18 @@ const Content: Component<{ directory: FileSystemDirectoryHandle, api?: Setter<Gr
}); });
createEffect(() => { createEffect(() => {
props.api?.(api()); const a = api();
if (!a) {
return;
}
props.api?.({
...a,
addLocale(locale) {
setLocales(current => new Set([...current, locale]).values().toArray());
},
});
}); });
createEffect(() => { createEffect(() => {