Skip to content

Commit 6c158d6

Browse files
committed
4905: add grid component to limit the responsibility of grid-generation-and-select
1 parent a4e3aa2 commit 6c158d6

File tree

2 files changed

+42
-25
lines changed

2 files changed

+42
-25
lines changed

assets/admin/components/screen/util/grid-generation-and-select.jsx

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { useState, useEffect } from "react";
22
import { Tabs, Tab, Alert } from "react-bootstrap";
3-
import {
4-
createGridArea,
5-
createGrid,
6-
} from "../../../../shared/grid-generator/grid-generator";
3+
import Grid from "./grid";
74
import { useTranslation } from "react-i18next";
85
import { useDispatch } from "react-redux";
96
import idFromUrl from "../../util/helpers/id-from-url";
@@ -33,13 +30,6 @@ function GridGenerationAndSelect({
3330
const dispatch = useDispatch();
3431
const [key, setKey] = useState(regions.length > 0 ? regions[0]["@id"] : "");
3532
const [selectedPlaylists, setSelectedPlaylists] = useState([]);
36-
const gridClasses = `grid ${vertical ? "vertical" : "horizontal"}`;
37-
// Rows and columns in grid defaults to 1.
38-
const configColumns = grid?.columns || 1;
39-
const configRows = grid?.rows || 1;
40-
const gridTemplateAreas = {
41-
gridTemplateAreas: createGrid(configColumns, configRows),
42-
};
4333

4434
/**
4535
* @param {object} props The props
@@ -175,20 +165,12 @@ function GridGenerationAndSelect({
175165
<>
176166
<div className="col-md-4 my-3 my-md-0">
177167
<div className="bg-light border rounded p-1">
178-
<div className={gridClasses} style={gridTemplateAreas}>
179-
{regions &&
180-
regions.map((data) => (
181-
<div
182-
key={data["@id"]}
183-
className={
184-
key === data["@id"] ? "grid-item selected" : "grid-item "
185-
}
186-
style={{ gridArea: createGridArea(data.gridArea) }}
187-
>
188-
{data.title}
189-
</div>
190-
))}
191-
</div>
168+
<Grid
169+
grid={grid}
170+
vertical={vertical}
171+
regions={regions}
172+
selected={key}
173+
/>
192174
</div>
193175
</div>
194176
<div className="col-md-12">
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import {
2+
createGridArea,
3+
createGrid,
4+
} from "../../../../shared/grid-generator/grid-generator";
5+
6+
// Rows and columns in grid defaults to 1.
7+
const Grid = ({
8+
vertical,
9+
regions,
10+
selected,
11+
grid: { columns = 1, rows = 1 },
12+
}) => {
13+
const gridClasses = `grid ${vertical ? "vertical" : "horizontal"}`;
14+
const gridTemplateAreas = {
15+
gridTemplateAreas: createGrid(columns, rows),
16+
};
17+
18+
return (
19+
<div className={gridClasses} style={gridTemplateAreas}>
20+
{regions.map((region) => (
21+
<div
22+
key={region["@id"]}
23+
className={
24+
selected === region["@id"] ? "grid-item selected" : "grid-item "
25+
}
26+
style={{ gridArea: createGridArea(region.gridArea) }}
27+
>
28+
{region.title}
29+
</div>
30+
))}
31+
</div>
32+
);
33+
};
34+
35+
export default Grid;

0 commit comments

Comments
 (0)