diff --git a/ui/src/common/QuickFilter.js b/ui/src/common/QuickFilter.js
index 679739d6d..62263ffc5 100644
--- a/ui/src/common/QuickFilter.js
+++ b/ui/src/common/QuickFilter.js
@@ -1,6 +1,7 @@
import React from 'react'
import { Chip, makeStyles } from '@material-ui/core'
import { useTranslate } from 'react-admin'
+import inflection from 'inflection'
const useQuickFilterStyles = makeStyles((theme) => ({
chip: {
@@ -8,9 +9,20 @@ const useQuickFilterStyles = makeStyles((theme) => ({
},
}))
-export const QuickFilter = ({ source, label }) => {
+export const QuickFilter = ({ source, resource, label, defaultValue }) => {
const translate = useTranslate()
const classes = useQuickFilterStyles()
- const lbl = label || `resources.song.fields.${source}`
- return
+ let lbl = label || source
+ if (typeof lbl === 'string' || lbl instanceof String) {
+ if (label) {
+ lbl = translate(lbl, {
+ _: inflection.humanize(inflection.underscore(lbl)),
+ })
+ } else {
+ lbl = translate(`resources.${resource}.fields.${source}`, {
+ _: inflection.humanize(inflection.underscore(source)),
+ })
+ }
+ }
+ return
}
diff --git a/ui/src/common/QuickFilter.test.js b/ui/src/common/QuickFilter.test.js
new file mode 100644
index 000000000..aad703110
--- /dev/null
+++ b/ui/src/common/QuickFilter.test.js
@@ -0,0 +1,33 @@
+import * as React from 'react'
+import { cleanup, render } from '@testing-library/react'
+import { QuickFilter } from './QuickFilter'
+import StarIcon from '@material-ui/icons/Star'
+
+describe('QuickFilter', () => {
+ afterEach(cleanup)
+
+ it('renders label if provided', () => {
+ const { getByText } = render(
+
+ )
+ expect(getByText('MyLabel')).not.toBeNull()
+ })
+
+ it('renders resource translation if label is not provided', () => {
+ const { getByText } = render(
+
+ )
+ expect(getByText('resources.song.fields.name')).not.toBeNull()
+ })
+
+ it('renders a component label', () => {
+ const { getByTestId } = render(
+ }
+ />
+ )
+ expect(getByTestId('label-icon-test')).not.toBeNull()
+ })
+})