Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 28 additions & 18 deletions frontend/viewer/src/lib/components/field-editors/audio-input.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,12 @@
loader = defaultLoader,
audioId = $bindable(),
onchange = () => {},
readonly = false,
}: {
loader?: (audioId: string) => Promise<ReadableStream | undefined | typeof handled>,
audioId: string | undefined,
onchange?: (audioId: string | undefined) => void;
readonly?: boolean;
} = $props();
const projectContext = useProjectContext();
Expand Down Expand Up @@ -253,9 +255,15 @@
</script>
{#if supportsAudio}
{#if !audioId}
<Button variant="secondary" icon="i-mdi-microphone-plus" size="sm" iconProps={{class: 'size-5'}} onclick={onGetAudioClick}>
{$t`Add audio`}
</Button>
{#if !readonly}
<Button variant="secondary" icon="i-mdi-microphone-plus" size="sm" iconProps={{class: 'size-5'}} onclick={onGetAudioClick}>
{$t`Add audio`}
</Button>
{:else}
<div class="text-muted-foreground p-1">
{$t`No audio`}
</div>
{/if}
{:else if isNotFoundAudioId(audioId)}
<div class="text-muted-foreground p-1">
{$t`Audio file not included in Send & Receive`}
Expand Down Expand Up @@ -294,21 +302,23 @@
<time>{zeroDuration}</time> / <time class="text-muted-foreground">{missingDuration}</time>
{/if}
</span>
<ResponsiveMenu.Root>
<ResponsiveMenu.Trigger>
{#snippet child({props})}
<Button variant="secondary" icon="i-mdi-dots-vertical" size="sm-icon" {...props} />
{/snippet}
</ResponsiveMenu.Trigger>
<ResponsiveMenu.Content>
<ResponsiveMenu.Item icon="i-mdi-microphone-plus" onSelect={onGetAudioClick}>
{$t`Replace audio`}
</ResponsiveMenu.Item>
<ResponsiveMenu.Item icon="i-mdi-delete" onSelect={onRemoveAudio}>
{$t`Remove audio`}
</ResponsiveMenu.Item>
</ResponsiveMenu.Content>
</ResponsiveMenu.Root>
{#if !readonly}
<ResponsiveMenu.Root>
<ResponsiveMenu.Trigger>
{#snippet child({props})}
<Button variant="secondary" icon="i-mdi-dots-vertical" size="sm-icon" {...props} />
{/snippet}
</ResponsiveMenu.Trigger>
<ResponsiveMenu.Content>
<ResponsiveMenu.Item icon="i-mdi-microphone-plus" onSelect={onGetAudioClick}>
{$t`Replace audio`}
</ResponsiveMenu.Item>
<ResponsiveMenu.Item icon="i-mdi-delete" onSelect={onRemoveAudio}>
{$t`Remove audio`}
</ResponsiveMenu.Item>
</ResponsiveMenu.Content>
</ResponsiveMenu.Root>
{/if}
{/if}
{#key audioId}
<audio bind:this={audio} onerror={onAudioError}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@
autocapitalize="off"
onchange={() => onchange?.(ws.wsId, value[ws.wsId], value)} />
{:else}
<AudioInput bind:audioId={value[ws.wsId]} onchange={() => onchange?.(ws.wsId, value[ws.wsId], value)}/>
<AudioInput
bind:audioId={value[ws.wsId]} onchange={() => onchange?.(ws.wsId, value[ws.wsId], value)}
{readonly} />
{/if}
</div>
{/each}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,9 @@
aria-label={ws.abbreviation}
/>
{:else}
<AudioInput bind:audioId={() => getAudioId(value[ws.wsId]), audioId => setAudioId(audioId, ws.wsId)}/>
<AudioInput
bind:audioId={() => getAudioId(value[ws.wsId]), audioId => setAudioId(audioId, ws.wsId)}
{readonly} />
{/if}
</div>
{/each}
Expand Down
4 changes: 4 additions & 0 deletions frontend/viewer/src/locales/en.po
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,10 @@ msgstr "New Word"
msgid "No activity found"
msgstr "No activity found"

#: src/lib/components/field-editors/audio-input.svelte:264
msgid "No audio"
msgstr "No audio"

#: src/lib/history/HistoryView.svelte:78
msgid "No change name"
msgstr "No change name"
Expand Down
4 changes: 4 additions & 0 deletions frontend/viewer/src/locales/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,10 @@ msgstr "Nueva palabra"
msgid "No activity found"
msgstr "No se ha encontrado actividad"

#: src/lib/components/field-editors/audio-input.svelte:264
msgid "No audio"
msgstr ""

#: src/lib/history/HistoryView.svelte:78
msgid "No change name"
msgstr "Sin cambio de nombre"
Expand Down
4 changes: 4 additions & 0 deletions frontend/viewer/src/locales/fr.po
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,10 @@ msgstr "Nouveau mot"
msgid "No activity found"
msgstr "Aucune activité trouvée"

#: src/lib/components/field-editors/audio-input.svelte:264
msgid "No audio"
msgstr ""

#: src/lib/history/HistoryView.svelte:78
msgid "No change name"
msgstr "Pas de changement de nom"
Expand Down
4 changes: 4 additions & 0 deletions frontend/viewer/src/locales/id.po
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,10 @@ msgstr "Kata Baru"
msgid "No activity found"
msgstr "Tidak ada aktivitas yang ditemukan"

#: src/lib/components/field-editors/audio-input.svelte:264
msgid "No audio"
msgstr ""

#: src/lib/history/HistoryView.svelte:78
msgid "No change name"
msgstr "Tidak ada perubahan nama"
Expand Down
4 changes: 4 additions & 0 deletions frontend/viewer/src/locales/ko.po
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,10 @@ msgstr "새 단어"
msgid "No activity found"
msgstr "활동을 찾을 수 없습니다."

#: src/lib/components/field-editors/audio-input.svelte:264
msgid "No audio"
msgstr ""

#: src/lib/history/HistoryView.svelte:78
msgid "No change name"
msgstr "이름 변경 안 함"
Expand Down
Loading