Skip to content

Commit 4ff0ce4

Browse files
committed
feat: Added unique names for toggles
1 parent 1fd7d60 commit 4ff0ce4

6 files changed

Lines changed: 17 additions & 2 deletions

File tree

src/app/page.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,13 +283,15 @@ export default function FormBuilderPage() {
283283
</Button>
284284
)}
285285
<ToggleGroupNav
286+
name="viewport"
286287
items={viewportItems}
287288
defaultValue={viewport}
288289
onValueChange={(value) =>
289290
updateViewport(value as "sm" | "md" | "lg")
290291
}
291292
/>
292293
<ToggleGroupNav
294+
name="mode"
293295
items={modeItems}
294296
defaultValue={mode}
295297
onValueChange={(value) => {
@@ -308,6 +310,7 @@ export default function FormBuilderPage() {
308310
className="w-full cursor-pointer"
309311
onClick={handleGenerateCode}
310312
disabled={components.length === 0}
313+
id="export-code-button"
311314
>
312315
Generate Code
313316
</Button>

src/components/form-builder/sidebar/groups/grid-group.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export function GridGroup() {
5555
</Label>
5656
<div className="flex flex-row items-center gap-2">
5757
<ToggleGroupNav
58+
name="visible"
5859
items={[
5960
{ value: "yes", label: "yes" },
6061
{ value: "no", label: "no" },

src/components/form-builder/sidebar/groups/input-group.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ export function InputGroup({
110110
</Label>
111111
<div className="flex flex-row items-center gap-2">
112112
<ToggleGroupNav
113+
name="asCard"
113114
items={[
114115
{ value: "yes", label: "yes" },
115116
{ value: "no", label: "no" },

src/components/form-builder/sidebar/groups/label-group.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export function LabelGroup({ whitelist = ["label", "label_description", "labelPo
6060
</Label>
6161
<div className="flex flex-row items-center gap-2">
6262
<ToggleGroupNav
63+
name="showLabel"
6364
items={[
6465
{ value: "yes", label: "yes" },
6566
{ value: "no", label: "no" },
@@ -132,6 +133,7 @@ export function LabelGroup({ whitelist = ["label", "label_description", "labelPo
132133
<Label className="text-xs text-gray-400 pl-2">Label Alignment</Label>
133134
<div className="flex flex-row items-center gap-2">
134135
<ToggleGroupNav
136+
name="labelAlign"
135137
items={alignmentItems}
136138
defaultValue={defaultValueLabelAlign}
137139
onValueChange={(value) =>

src/components/form-builder/sidebar/groups/validation-group.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export function ValidationGroup() {
4444
</Label>
4545
<div className="flex flex-row items-center gap-2">
4646
<ToggleGroupNav
47+
name="required"
4748
items={[
4849
{ value: "yes", label: "yes" },
4950
{ value: "no", label: "no" },

src/components/form-builder/ui/toggle-group-nav.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,23 @@ interface ToggleGroupNavProps {
1212
defaultValue: string;
1313
onValueChange: (value: string) => void;
1414
className?: string;
15+
name?: string;
1516
}
1617

1718
export function ToggleGroupNav({
1819
items,
1920
defaultValue,
2021
onValueChange,
2122
className,
23+
name
2224
}: ToggleGroupNavProps) {
2325
const handleValueChange = (value: string) => {
2426
if (value && value !== defaultValue) {
2527
onValueChange(value);
2628
}
2729
};
2830

31+
2932
return (
3033
<ToggleGroup
3134
type="single"
@@ -34,17 +37,21 @@ export function ToggleGroupNav({
3437
className={cn("flex bg-muted rounded-md p-0.5 h-auto", className)}
3538
size="sm"
3639
>
37-
{items.map((item) => (
40+
{items.map((item) => {
41+
const toggleName = name ? `toggle__${name}__${item.value}` : `toggle__${item.value}`;
42+
return (
3843
<ToggleGroupItem
3944
key={item.value}
4045
value={item.value}
46+
name={toggleName}
4147
className="h-auto p-1.5 flex-1 text-muted-foreground data-[state=on]:bg-white data-[state=on]:text-primary hover:bg-white hover:text-accent-foreground cursor-pointer"
4248
>
4349
{item.icon && <item.icon className="h-4 w-4" />}
4450

4551
{item.label && <span className="text-xs select-none">{item.label}</span>}
4652
</ToggleGroupItem>
47-
))}
53+
)
54+
})}
4855
</ToggleGroup>
4956
);
5057
}

0 commit comments

Comments
 (0)