Skip to content

Commit 750a180

Browse files
committed
feat: add Unsplash background selection to Home and TemplateCard (#239)
* Introduce bgSource (null or 'unsplash') and unsplashQuery fields in Home * Provide an Autocomplete with a single 'unsplash' option for background source * Pass bgSource and unsplashQuery as props to TemplateCard * Append bgSource=unsplash & unsplashQuery=... to the quote URL if selected
1 parent 1369bb5 commit 750a180

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

frontend/src/components/Pages/Home/index.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ const Home = () => {
2424
const [bgColor, setBgColor] = useState(null);
2525
const [borderColor, setBorderColor] = useState(null);
2626
const [quoteType, setQuoteType] = useState("random");
27+
const [bgSource, setBgSource] = useState(null);
28+
const [unsplashQuery, setUnsplashQuery] = useState("");
29+
2730

2831
const classes = useStyles();
2932

@@ -158,11 +161,35 @@ const Home = () => {
158161
/>
159162
</Grid>
160163

164+
<Grid item xs={12} sm={6} lg={3}>
165+
<Autocomplete
166+
id="bg-source"
167+
options={['unsplash']}
168+
value={bgSource}
169+
style={{ width: 300, margin: '0 auto' }}
170+
onChange={(_event, newValue) => {
171+
setBgSource(newValue);
172+
}}
173+
renderInput={(params) => <TextField {...params} label="Background Source" placeholder="Select 'unsplash' or leave empty" variant="outlined" />}
174+
/>
175+
</Grid>
176+
177+
<Grid item xs={12} sm={6} lg={3}>
178+
<TextField
179+
label="Unsplash query"
180+
variant="outlined"
181+
value={unsplashQuery}
182+
style={{ width: 300, margin: '0 auto' }}
183+
onChange={(event) => setUnsplashQuery(event.target.value)}
184+
disabled={bgSource !== 'unsplash'}
185+
/>
186+
</Grid>
187+
161188
</Grid>
162189

163190
<Grid container spacing={4}>
164191
<Grid item xs={12} style={{ marginTop: '20px' }}>
165-
<TemplateCard theme={theme} animation={animation} layout={layout} font={font} fontColor={fontColor} bgColor={bgColor} borderColor={borderColor} quoteType={quoteType} />
192+
<TemplateCard theme={theme} animation={animation} layout={layout} font={font} fontColor={fontColor} bgColor={bgColor} borderColor={borderColor} quoteType={quoteType} bgSource={bgSource} unsplashQuery={unsplashQuery} />
166193
</Grid>
167194
<Grid item xs={12}>
168195
<Typography align="center">Other layouts</Typography>
@@ -171,7 +198,7 @@ const Home = () => {
171198
layouts.filter((item) => item !== layout).map((restLayout) => {
172199
return (
173200
<Grid key={restLayout} item xs={12} sm={12} md={6}>
174-
<TemplateCard theme={theme} animation={animation} layout={restLayout} font={font} fontColor={fontColor} bgColor={bgColor} borderColor={borderColor} quoteType={quoteType} />
201+
<TemplateCard theme={theme} animation={animation} layout={restLayout} font={font} fontColor={fontColor} bgColor={bgColor} borderColor={borderColor} quoteType={quoteType} bgSource={bgSource} unsplashQuery={unsplashQuery} />
175202
</Grid>
176203
)
177204
})

frontend/src/components/organisms/TemplateCard/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ const TemplateCard = (props) => {
7878
...(props.bgColor && { bgColor: props.bgColor }),
7979
...(props.fontColor && { fontColor: props.fontColor }),
8080
...(isLayoutDefault && props.borderColor && { borderColor }),
81+
...(props.bgSource === 'unsplash' && { bgSource: 'unsplash' }),
82+
...(props.bgSource === 'unsplash' && props.unsplashQuery && { unsplashQuery: props.unsplashQuery }),
8183
});
8284
const quoteUrl = `${originUrl}/quote?${params.toString()}`;
8385

0 commit comments

Comments
 (0)