Skip to content

Commit a357886

Browse files
author
Rajat
committed
FAQ block new layout switcher, re-arranger
1 parent 1ad288e commit a357886

3 files changed

Lines changed: 39 additions & 9 deletions

File tree

packages/page-blocks/src/blocks/faq/admin-widget/index.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export default function AdminWidget({
9595
ThemeStyle["structure"]["section"]["padding"]["y"]
9696
>(settings.verticalPadding);
9797
const [cssId, setCssId] = useState(settings.cssId);
98+
const [layout, setLayout] = useState(settings.layout || "vertical");
9899

99100
const onSettingsChanged = () =>
100101
onChange({
@@ -106,6 +107,7 @@ export default function AdminWidget({
106107
verticalPadding,
107108
cssId,
108109
itemBeingEditedIndex,
110+
layout,
109111
});
110112

111113
useEffect(() => {
@@ -119,6 +121,7 @@ export default function AdminWidget({
119121
verticalPadding,
120122
cssId,
121123
itemBeingEditedIndex,
124+
layout,
122125
]);
123126

124127
const onItemChange = (newItemData: Item) => {
@@ -232,6 +235,17 @@ export default function AdminWidget({
232235
]}
233236
onChange={(value: Alignment) => setHeaderAlignment(value)}
234237
/>
238+
<Select
239+
title="Layout"
240+
value={layout}
241+
options={[
242+
{ label: "Horizontal", value: "horizontal" },
243+
{ label: "Vertical", value: "vertical" },
244+
]}
245+
onChange={(value: "horizontal" | "vertical") =>
246+
setLayout(value)
247+
}
248+
/>
235249
<MaxWidthSelector
236250
value={maxWidth || theme.theme.structure.page.width}
237251
onChange={setMaxWidth}

packages/page-blocks/src/blocks/faq/settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ export default interface Settings extends WidgetDefaultSettings {
1313
items?: Item[];
1414
cssId?: string;
1515
itemBeingEditedIndex?: number;
16+
layout?: "horizontal" | "vertical";
1617
}

packages/page-blocks/src/blocks/faq/widget.tsx

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
Text1,
1616
} from "@courselit/page-primitives";
1717
import { ThemeStyle } from "@courselit/page-models";
18+
import clsx from "clsx";
1819

1920
export default function Widget({
2021
settings: {
@@ -26,6 +27,7 @@ export default function Widget({
2627
maxWidth,
2728
verticalPadding,
2829
itemBeingEditedIndex,
30+
layout,
2931
},
3032
state,
3133
editing,
@@ -36,19 +38,23 @@ export default function Widget({
3638
maxWidth || theme.theme.structure.page.width;
3739
overiddenTheme.structure.section.padding.y =
3840
verticalPadding || theme.theme.structure.section.padding.y;
39-
const accordionValue = editing
40-
? `${items[itemBeingEditedIndex]?.title}-${itemBeingEditedIndex}`
41-
: undefined;
4241

4342
return (
4443
<Section theme={overiddenTheme} id={cssId}>
45-
<div className={`flex flex-col gap-4`}>
44+
<div
45+
className={clsx(
46+
"flex gap-4 flex-col",
47+
layout === "horizontal" ? "lg:flex-row" : "",
48+
)}
49+
>
4650
<div
47-
className={`flex flex-col ${
51+
className={clsx(
52+
"flex w-full flex-col",
4853
headerAlignment === "center"
4954
? "items-center"
50-
: "items-start"
51-
}`}
55+
: "items-start",
56+
layout === "horizontal" ? "lg:w-1/2" : "",
57+
)}
5258
>
5359
<Header1 className="mb-4" theme={overiddenTheme}>
5460
{title}
@@ -68,12 +74,21 @@ export default function Widget({
6874
)}
6975
</div>
7076
{items && items.length > 0 && (
71-
<div className="flex flex-wrap gap-[1%]">
77+
<div
78+
className={clsx(
79+
"flex w-full flex-wrap gap-[1%]",
80+
layout === "horizontal" ? "lg:w-1/2" : "",
81+
)}
82+
>
7283
<Accordion
7384
type="single"
7485
collapsible
7586
className="w-full"
76-
value={accordionValue}
87+
value={
88+
editing
89+
? `${items[itemBeingEditedIndex]?.title}-${itemBeingEditedIndex}`
90+
: undefined
91+
}
7792
>
7893
{items.map((item: Item, index: number) => (
7994
<AccordionItem

0 commit comments

Comments
 (0)