Skip to content

Commit 6cf4b2a

Browse files
authored
Add part of speech filter (#2079)
1 parent 5190ba2 commit 6cf4b2a

12 files changed

Lines changed: 148 additions & 17 deletions

File tree

frontend/viewer/src/lib/components/field-editors/multi-select.svelte

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,13 @@
163163
</script>
164164

165165
{#snippet displayBadges()}
166-
<div class="flex flex-wrap justify-start gap-2">
166+
<div class="flex flex-wrap justify-start gap-2 overflow-hidden">
167167
{#each displayValues as value (getId(value))}
168168
<Badge>
169-
{getLabel(value)}
169+
{getLabel(value) || $t`Untitled`}
170170
</Badge>
171171
{:else}
172-
<span class="text-muted-foreground">
172+
<span class="text-muted-foreground x-ellipsis">
173173
{placeholder ?? $t`None`}
174174
<!-- ensures that:
175175
1) baseline alignment works for consumers of this component
@@ -213,7 +213,7 @@
213213
{/if}
214214
</div>
215215
</CommandInput>
216-
<CommandList class="max-md:h-[300px] md:max-h-[50vh]">
216+
<CommandList class="max-md:h-[300px] md:max-h-[40vh]">
217217
<CommandEmpty>{emptyResultsPlaceholder ?? $t`No items found`}</CommandEmpty>
218218
<CommandGroup>
219219
{#each renderedOptions as value, i (getId(value))}
@@ -222,9 +222,9 @@
222222
{@const selected = pendingValues.some(v => v.id === id)}
223223
<CommandItem
224224
keywords={[label.toLocaleLowerCase()]}
225-
value={label.toLocaleLowerCase()}
225+
value={label.toLocaleLowerCase() + String(id)}
226226
onSelect={() => toggleSelected(value, !dirty && !IsMobile.value)}
227-
class="group max-md:h-12"
227+
class={cn('group max-md:h-12', label || 'text-muted-foreground')}
228228
data-value-index={i}
229229
aria-label={label}
230230
>
@@ -245,7 +245,7 @@
245245
}}
246246
onCheckedChange={() => toggleSelected(value, false)}
247247
/>
248-
{label}
248+
{label || $t`Untitled`}
249249
</CommandItem>
250250
{/each}
251251
{#if renderedOptions.length < filteredOptions.length}

frontend/viewer/src/lib/components/field-editors/select.svelte

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,11 @@
9494
<Button disabled={readonly} bind:ref={triggerRef} variant="outline" {...props} role="combobox" aria-expanded={open}
9595
class={cn('w-full h-auto min-h-10 px-2 justify-between disabled:opacity-100 disabled:border-transparent', className)}>
9696
{#if value}
97-
<span>
98-
{getLabel(value)}
97+
<span class="x-ellipsis mr-4">
98+
{getLabel(value) || $t`Untitled`}
9999
</span>
100100
{:else}
101-
<span class="text-muted-foreground">
101+
<span class="text-muted-foreground x-ellipsis mr-4">
102102
{placeholder ?? $t`None`}
103103
<!-- ensures that baseline alignment works for consumers of this component -->
104104
&nbsp;
@@ -129,7 +129,7 @@
129129
{/if}
130130
</div>
131131
</CommandInput>
132-
<CommandList class="max-md:h-[300px] md:max-h-[50vh]">
132+
<CommandList class="max-md:h-[300px] md:max-h-[40vh]">
133133
<CommandEmpty>{emptyResultsPlaceholder ?? $t`No items found`}</CommandEmpty>
134134
<CommandGroup>
135135
{#each renderedOptions as option, i (getId(option))}
@@ -138,14 +138,14 @@
138138
{@const selected = value && getId(value) === id}
139139
<CommandItem
140140
keywords={[label.toLocaleLowerCase()]}
141-
value={label.toLocaleLowerCase()}
141+
value={label.toLocaleLowerCase() + String(id)}
142142
onSelect={() => selectValue(option)}
143-
class="group max-md:h-12"
143+
class={cn('group max-md:h-12', label || 'text-muted-foreground')}
144144
data-value-index={i}
145145
aria-label={label}
146146
>
147147
<Icon icon="i-mdi-check" class={cn('md:hidden', selected || 'invisible')} />
148-
{label}
148+
{label || $t`Untitled`}
149149
</CommandItem>
150150
{/each}
151151
{#if renderedOptions.length < filteredOptions.length}

frontend/viewer/src/lib/components/ui/button/x-button.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
</script>
1313

1414
<Button icon="i-mdi-close" variant="ghost" size="xs-icon" aria-label={$t`Close`}
15-
class={cn('opacity-70 transition-opacity hover:opacity-100 ring-offset-background focus:ring-ring focus:outline-none focus:ring-2 disabled:pointer-events-none',
15+
class={cn('bg-background opacity-70 transition-opacity hover:opacity-100 ring-offset-background focus:ring-ring focus:outline-none focus:ring-2 disabled:pointer-events-none',
1616
className)} {...restProps} />

frontend/viewer/src/locales/en.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,14 @@ msgstr "Add Word"
130130
msgid "an entry"
131131
msgstr "an entry"
132132

133+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
134+
msgid "Any grammatical info."
135+
msgstr "Any grammatical info."
136+
137+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
138+
msgid "Any part of speech"
139+
msgstr "Any part of speech"
140+
133141
#: src/project/browse/filter/SemanticDomainSelect.svelte
134142
msgid "Any semantic domain"
135143
msgstr "Any semantic domain"
@@ -576,6 +584,7 @@ msgstr "Gloss"
576584
msgid "Go to {0}"
577585
msgstr "Go to {0}"
578586

587+
#: src/project/browse/SearchFilter.svelte
579588
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
580589
msgid "Grammatical info."
581590
msgstr "Grammatical info."
@@ -893,6 +902,7 @@ msgstr "Part"
893902
msgid "Part of"
894903
msgstr "Part of"
895904

905+
#: src/project/browse/SearchFilter.svelte
896906
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
897907
msgid "Part of speech"
898908
msgstr "Part of speech"
@@ -1243,6 +1253,10 @@ msgstr "Unknown server"
12431253
#: src/project/browse/EntryView.svelte
12441254
#: src/project/browse/EntryRow.svelte
12451255
#: src/project/browse/EntryMenu.svelte
1256+
#: src/lib/components/field-editors/select.svelte
1257+
#: src/lib/components/field-editors/select.svelte
1258+
#: src/lib/components/field-editors/multi-select.svelte
1259+
#: src/lib/components/field-editors/multi-select.svelte
12461260
msgid "Untitled"
12471261
msgstr "Untitled"
12481262

frontend/viewer/src/locales/es.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ msgstr ""
135135
msgid "an entry"
136136
msgstr "una entrada"
137137

138+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
139+
msgid "Any grammatical info."
140+
msgstr ""
141+
142+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
143+
msgid "Any part of speech"
144+
msgstr ""
145+
138146
#: src/project/browse/filter/SemanticDomainSelect.svelte
139147
msgid "Any semantic domain"
140148
msgstr ""
@@ -581,6 +589,7 @@ msgstr "Glosa"
581589
msgid "Go to {0}"
582590
msgstr "Visite {0}"
583591

592+
#: src/project/browse/SearchFilter.svelte
584593
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
585594
msgid "Grammatical info."
586595
msgstr "Información gramatical."
@@ -898,6 +907,7 @@ msgstr "Pieza"
898907
msgid "Part of"
899908
msgstr "Parte de"
900909

910+
#: src/project/browse/SearchFilter.svelte
901911
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
902912
msgid "Part of speech"
903913
msgstr "Parte de la oración"
@@ -1248,6 +1258,10 @@ msgstr ""
12481258
#: src/project/browse/EntryView.svelte
12491259
#: src/project/browse/EntryRow.svelte
12501260
#: src/project/browse/EntryMenu.svelte
1261+
#: src/lib/components/field-editors/select.svelte
1262+
#: src/lib/components/field-editors/select.svelte
1263+
#: src/lib/components/field-editors/multi-select.svelte
1264+
#: src/lib/components/field-editors/multi-select.svelte
12511265
msgid "Untitled"
12521266
msgstr "Sin título"
12531267

frontend/viewer/src/locales/fr.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ msgstr ""
135135
msgid "an entry"
136136
msgstr "une entrée"
137137

138+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
139+
msgid "Any grammatical info."
140+
msgstr ""
141+
142+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
143+
msgid "Any part of speech"
144+
msgstr ""
145+
138146
#: src/project/browse/filter/SemanticDomainSelect.svelte
139147
msgid "Any semantic domain"
140148
msgstr ""
@@ -581,6 +589,7 @@ msgstr "Glose"
581589
msgid "Go to {0}"
582590
msgstr "Aller sur {0}"
583591

592+
#: src/project/browse/SearchFilter.svelte
584593
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
585594
msgid "Grammatical info."
586595
msgstr "Informations grammaticales."
@@ -898,6 +907,7 @@ msgstr "Partie"
898907
msgid "Part of"
899908
msgstr "Une partie de"
900909

910+
#: src/project/browse/SearchFilter.svelte
901911
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
902912
msgid "Part of speech"
903913
msgstr "Partie du discours"
@@ -1248,6 +1258,10 @@ msgstr ""
12481258
#: src/project/browse/EntryView.svelte
12491259
#: src/project/browse/EntryRow.svelte
12501260
#: src/project/browse/EntryMenu.svelte
1261+
#: src/lib/components/field-editors/select.svelte
1262+
#: src/lib/components/field-editors/select.svelte
1263+
#: src/lib/components/field-editors/multi-select.svelte
1264+
#: src/lib/components/field-editors/multi-select.svelte
12511265
msgid "Untitled"
12521266
msgstr "Sans titre"
12531267

frontend/viewer/src/locales/id.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ msgstr ""
135135
msgid "an entry"
136136
msgstr "sebuah entri"
137137

138+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
139+
msgid "Any grammatical info."
140+
msgstr ""
141+
142+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
143+
msgid "Any part of speech"
144+
msgstr ""
145+
138146
#: src/project/browse/filter/SemanticDomainSelect.svelte
139147
msgid "Any semantic domain"
140148
msgstr ""
@@ -581,6 +589,7 @@ msgstr "Arti Singkat"
581589
msgid "Go to {0}"
582590
msgstr "Buka {0}"
583591

592+
#: src/project/browse/SearchFilter.svelte
584593
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
585594
msgid "Grammatical info."
586595
msgstr "Info tata bahasa."
@@ -898,6 +907,7 @@ msgstr "Bagian"
898907
msgid "Part of"
899908
msgstr "Bagian dari"
900909

910+
#: src/project/browse/SearchFilter.svelte
901911
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
902912
msgid "Part of speech"
903913
msgstr "Bagian dari pidato"
@@ -1248,6 +1258,10 @@ msgstr ""
12481258
#: src/project/browse/EntryView.svelte
12491259
#: src/project/browse/EntryRow.svelte
12501260
#: src/project/browse/EntryMenu.svelte
1261+
#: src/lib/components/field-editors/select.svelte
1262+
#: src/lib/components/field-editors/select.svelte
1263+
#: src/lib/components/field-editors/multi-select.svelte
1264+
#: src/lib/components/field-editors/multi-select.svelte
12511265
msgid "Untitled"
12521266
msgstr "Tanpa judul"
12531267

frontend/viewer/src/locales/ko.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ msgstr ""
135135
msgid "an entry"
136136
msgstr "항목"
137137

138+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
139+
msgid "Any grammatical info."
140+
msgstr ""
141+
142+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
143+
msgid "Any part of speech"
144+
msgstr ""
145+
138146
#: src/project/browse/filter/SemanticDomainSelect.svelte
139147
msgid "Any semantic domain"
140148
msgstr ""
@@ -581,6 +589,7 @@ msgstr "광택"
581589
msgid "Go to {0}"
582590
msgstr "{0}으로 이동"
583591

592+
#: src/project/browse/SearchFilter.svelte
584593
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
585594
msgid "Grammatical info."
586595
msgstr "문법 정보."
@@ -898,6 +907,7 @@ msgstr "Part"
898907
msgid "Part of"
899908
msgstr "의 일부"
900909

910+
#: src/project/browse/SearchFilter.svelte
901911
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
902912
msgid "Part of speech"
903913
msgstr "품사"
@@ -1248,6 +1258,10 @@ msgstr ""
12481258
#: src/project/browse/EntryView.svelte
12491259
#: src/project/browse/EntryRow.svelte
12501260
#: src/project/browse/EntryMenu.svelte
1261+
#: src/lib/components/field-editors/select.svelte
1262+
#: src/lib/components/field-editors/select.svelte
1263+
#: src/lib/components/field-editors/multi-select.svelte
1264+
#: src/lib/components/field-editors/multi-select.svelte
12511265
msgid "Untitled"
12521266
msgstr "제목 없음"
12531267

frontend/viewer/src/locales/ms.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ msgstr ""
135135
msgid "an entry"
136136
msgstr "satu entri"
137137

138+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
139+
msgid "Any grammatical info."
140+
msgstr ""
141+
142+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
143+
msgid "Any part of speech"
144+
msgstr ""
145+
138146
#: src/project/browse/filter/SemanticDomainSelect.svelte
139147
msgid "Any semantic domain"
140148
msgstr ""
@@ -581,6 +589,7 @@ msgstr "Glos"
581589
msgid "Go to {0}"
582590
msgstr "Pergi ke {0}"
583591

592+
#: src/project/browse/SearchFilter.svelte
584593
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
585594
msgid "Grammatical info."
586595
msgstr "Maklumat tatabahasa."
@@ -898,6 +907,7 @@ msgstr "Bahagian"
898907
msgid "Part of"
899908
msgstr "Sebahagian daripada"
900909

910+
#: src/project/browse/SearchFilter.svelte
901911
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
902912
msgid "Part of speech"
903913
msgstr "Jenis Perkataan"
@@ -1248,6 +1258,10 @@ msgstr ""
12481258
#: src/project/browse/EntryView.svelte
12491259
#: src/project/browse/EntryRow.svelte
12501260
#: src/project/browse/EntryMenu.svelte
1261+
#: src/lib/components/field-editors/select.svelte
1262+
#: src/lib/components/field-editors/select.svelte
1263+
#: src/lib/components/field-editors/multi-select.svelte
1264+
#: src/lib/components/field-editors/multi-select.svelte
12511265
msgid "Untitled"
12521266
msgstr "Tanpa Tajuk"
12531267

frontend/viewer/src/locales/sw.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ msgstr ""
135135
msgid "an entry"
136136
msgstr ""
137137

138+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
139+
msgid "Any grammatical info."
140+
msgstr ""
141+
142+
#: src/project/browse/filter/PartOfSpeechSelect.svelte
143+
msgid "Any part of speech"
144+
msgstr ""
145+
138146
#: src/project/browse/filter/SemanticDomainSelect.svelte
139147
msgid "Any semantic domain"
140148
msgstr ""
@@ -581,6 +589,7 @@ msgstr "Glosi"
581589
msgid "Go to {0}"
582590
msgstr ""
583591

592+
#: src/project/browse/SearchFilter.svelte
584593
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
585594
msgid "Grammatical info."
586595
msgstr ""
@@ -898,6 +907,7 @@ msgstr "Sehemu"
898907
msgid "Part of"
899908
msgstr ""
900909

910+
#: src/project/browse/SearchFilter.svelte
901911
#: src/lib/entry-editor/object-editors/SenseEditorPrimitive.svelte
902912
msgid "Part of speech"
903913
msgstr "Sehemu za mazungumzo"
@@ -1248,6 +1258,10 @@ msgstr ""
12481258
#: src/project/browse/EntryView.svelte
12491259
#: src/project/browse/EntryRow.svelte
12501260
#: src/project/browse/EntryMenu.svelte
1261+
#: src/lib/components/field-editors/select.svelte
1262+
#: src/lib/components/field-editors/select.svelte
1263+
#: src/lib/components/field-editors/multi-select.svelte
1264+
#: src/lib/components/field-editors/multi-select.svelte
12511265
msgid "Untitled"
12521266
msgstr ""
12531267

0 commit comments

Comments
 (0)