Skip to content

Commit f80f8ef

Browse files
author
Nemobot
committed
SearchBar is not a form field
1 parent 1f33969 commit f80f8ef

File tree

4 files changed

+29
-29
lines changed

4 files changed

+29
-29
lines changed

src/Field/InputConfig.ts

+7
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,10 @@ export type InputConfig = {
88
radius: BentoSprinkles["borderRadius"];
99
fontSize: ComponentProps<typeof Body>["size"];
1010
};
11+
12+
export const defaultInputConfig: InputConfig = {
13+
radius: 4,
14+
paddingX: 16,
15+
paddingY: 16,
16+
fontSize: "large",
17+
};

src/Field/createFormFields.tsx

+3-15
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@ import { createNumberInput } from "../NumberInput/createNumberInput";
66
import { createNumberField } from "../NumberField/createNumberField";
77
import { createSelectField, DropdownConfig } from "../SelectField/createSelectField";
88
import { SelectionControlConfig } from "./SelectionControlConfig";
9-
import { InputConfig } from "./InputConfig";
10-
import { createSearchBar, IconClose, IconSearch, SearchBarConfig } from "../";
9+
import { defaultInputConfig, InputConfig } from "./InputConfig";
1110

1211
type FieldsConfig = {
1312
field: FieldConfig;
1413
input: InputConfig;
1514
selectionControl: SelectionControlConfig;
1615
dropdown: DropdownConfig;
17-
searchBar: SearchBarConfig;
1816
};
1917

2018
export function createFormFields(
@@ -27,12 +25,7 @@ export function createFormFields(
2725
},
2826
internalSpacing: 4,
2927
},
30-
input: {
31-
radius: 4,
32-
paddingX: 16,
33-
paddingY: 16,
34-
fontSize: "large",
35-
},
28+
input: defaultInputConfig,
3629
selectionControl: {
3730
paddingY: 8,
3831
controlLabelSpacing: 8,
@@ -66,10 +59,6 @@ export function createFormFields(
6659
},
6760
},
6861
},
69-
searchBar: {
70-
clearIcon: IconClose,
71-
searchIcon: IconSearch,
72-
},
7362
}
7463
) {
7564
const Field = createField(config.field);
@@ -79,7 +68,6 @@ export function createFormFields(
7968
const NumberInput = createNumberInput(config.input);
8069
const NumberField = createNumberField(Field, NumberInput);
8170
const SelectField = createSelectField(Field, config.input, config.dropdown);
82-
const SearchBar = createSearchBar(Field, config.input, config.searchBar);
8371

84-
return { CheckboxField, Field, NumberField, RadioGroupField, SearchBar, SelectField, TextField };
72+
return { CheckboxField, Field, NumberField, RadioGroupField, SelectField, TextField };
8573
}

src/SearchBar/createSearchBar.tsx

+15-12
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { useTextField } from "@react-aria/textfield";
22
import { FunctionComponent, useRef } from "react";
33
import useDimensions from "react-cool-dimensions";
4-
import { IconButton, LocalizedString } from "..";
4+
import { IconButton, IconClose, IconSearch, LocalizedString } from "..";
55
import { Box } from "../internal";
66
import { inputRecipe } from "../Field/Field.css";
77
import { bodyRecipe } from "../Typography/Body/Body.css";
88
import { input } from "./SearchBar.css";
9-
import { FieldType } from "src/Field/createField";
10-
import { InputConfig } from "src/Field/InputConfig";
11-
import { IconProps } from "src/Icons/IconProps";
9+
import { FieldType } from "../Field/createField";
10+
import { defaultInputConfig, InputConfig } from "../Field/InputConfig";
11+
import { IconProps } from "../Icons/IconProps";
1212

1313
type Props = {
1414
value: string;
@@ -26,8 +26,11 @@ export type SearchBarConfig = {
2626

2727
export function createSearchBar(
2828
Field: FieldType,
29-
inputConfig: InputConfig,
30-
config: SearchBarConfig
29+
config: InputConfig & SearchBarConfig = {
30+
...defaultInputConfig,
31+
clearIcon: IconClose,
32+
searchIcon: IconSearch,
33+
}
3134
) {
3235
return function SearchBar(props: Props) {
3336
const inputRef = useRef<HTMLInputElement>(null);
@@ -75,7 +78,7 @@ export function createSearchBar(
7578
display="flex"
7679
justifyContent="center"
7780
alignItems="center"
78-
paddingX={inputConfig.paddingX}
81+
paddingX={config.paddingX}
7982
top={0}
8083
bottom={0}
8184
left={0}
@@ -97,7 +100,7 @@ export function createSearchBar(
97100
bodyRecipe({
98101
color: props.disabled ? "disabled" : "default",
99102
weight: "regular",
100-
size: inputConfig.fontSize,
103+
size: config.fontSize,
101104
}),
102105
]}
103106
display="flex"
@@ -106,9 +109,9 @@ export function createSearchBar(
106109
paddingLeft: leftAccessoryWidth,
107110
paddingRight: rightAccessoryWidth,
108111
}}
109-
borderRadius={inputConfig.radius}
110-
paddingX={inputConfig.paddingX}
111-
paddingY={inputConfig.paddingY}
112+
borderRadius={config.radius}
113+
paddingX={config.paddingX}
114+
paddingY={config.paddingY}
112115
/>
113116
{rightAccessoryContent && (
114117
<Box
@@ -117,7 +120,7 @@ export function createSearchBar(
117120
display="flex"
118121
justifyContent="center"
119122
alignItems="center"
120-
paddingX={inputConfig.paddingX}
123+
paddingX={config.paddingX}
121124
top={0}
122125
bottom={0}
123126
right={0}

stories/index.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,18 @@ import {
2121
createAreaLoader,
2222
createAvatar,
2323
createFormLayoutComponents,
24+
createSearchBar,
2425
} from "../src";
2526
import { sprinkles } from "./sprinkles.css";
2627

2728
export * from "../src";
2829
export const Box = createBentoBox(sprinkles);
2930
export const { Stack, Column, Columns, Inline, Inset } = createLayoutComponents(Box);
31+
export const { Field, CheckboxField, NumberField, RadioGroupField, SelectField, TextField } =
32+
createFormFields();
3033
export const Button = createButton({});
3134
export const Actions = createActions(Button);
3235
export const { Form, FormSection, FormRow } = createFormLayoutComponents(Actions);
33-
export const { CheckboxField, NumberField, RadioGroupField, SelectField, TextField } =
34-
createFormFields();
3536
export const Banner = createBanner({});
3637
export const { Toast, ToastProvider } = createToast(Button, {});
3738
export const Card = createCard<24 | 32 | 40>({});
@@ -46,3 +47,4 @@ export const Tooltip = createTooltip();
4647
export const Tabs = createTabs();
4748
export const AreaLoader = createAreaLoader();
4849
export const Avatar = createAvatar();
50+
export const SearchBar = createSearchBar(Field);

0 commit comments

Comments
 (0)