Skip to content

Commit f483768

Browse files
committed
fix: add classNames
1 parent 374a2c1 commit f483768

3 files changed

Lines changed: 65 additions & 12 deletions

File tree

packages/instantsearch-ui-components/src/components/FilterPill.tsx

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,67 @@ import { cx } from '../lib/cx';
33

44
import type { Renderer } from '../types';
55

6+
export type FilterPillClassNames = {
7+
/**
8+
* Class names to apply to the root element
9+
*/
10+
root?: string | string[];
11+
/**
12+
* Class names to apply to the label element
13+
*/
14+
label?: string | string[];
15+
/**
16+
* Class names to apply to the value element
17+
*/
18+
value?: string | string[];
19+
/**
20+
* Class names to apply to the count element
21+
*/
22+
count?: string | string[];
23+
};
24+
625
export type FilterPillProps = {
726
label: string;
827
value: string;
928
count: number;
1029
isRefined: boolean;
1130
onClick: () => void;
12-
className?: string;
31+
classNames?: Partial<FilterPillClassNames>;
1332
key?: string;
1433
};
1534

1635
export function createFilterPillComponent({
1736
createElement,
1837
}: Pick<Renderer, 'createElement'>) {
1938
return function FilterPill(userProps: FilterPillProps) {
20-
const { label, value, count, isRefined, onClick, className } = userProps;
39+
const {
40+
label,
41+
value,
42+
count,
43+
isRefined,
44+
onClick,
45+
classNames = {},
46+
} = userProps;
2147

2248
return (
2349
<button
2450
className={cx(
2551
'ais-FilterPill',
2652
isRefined && 'ais-FilterPill--refined',
27-
className
53+
classNames.root
2854
)}
2955
onClick={onClick}
3056
type="button"
3157
>
32-
<span className="ais-FilterPill-label">{label}:</span>
33-
<span className="ais-FilterPill-value">{value}</span>
34-
<span className="ais-FilterPill-count">({count})</span>
58+
<span className={cx('ais-FilterPill-label', classNames.label)}>
59+
{label}:
60+
</span>
61+
<span className={cx('ais-FilterPill-value', classNames.value)}>
62+
{value}
63+
</span>
64+
<span className={cx('ais-FilterPill-count', classNames.count)}>
65+
({count})
66+
</span>
3567
</button>
3668
);
3769
};

packages/instantsearch-ui-components/src/components/SuggestedFilters.tsx

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,26 @@ export type SuggestedFilter = {
1313
count: number;
1414
};
1515

16+
export type SuggestedFiltersClassNames = {
17+
/**
18+
* Class names to apply to the root element
19+
*/
20+
root?: string | string[];
21+
/**
22+
* Class names to apply to the header element
23+
*/
24+
header?: string | string[];
25+
/**
26+
* Class names to apply to the filters list element
27+
*/
28+
list?: string | string[];
29+
};
30+
1631
export type SuggestedFiltersProps = {
1732
filters: SuggestedFilter[];
1833
onFilterClick: (attribute: string, value: string, isRefined: boolean) => void;
1934
indexUiState: object;
20-
className?: string;
35+
classNames?: Partial<SuggestedFiltersClassNames>;
2136
};
2237

2338
export function createSuggestedFiltersComponent({
@@ -28,7 +43,7 @@ export function createSuggestedFiltersComponent({
2843
});
2944

3045
return function SuggestedFilters(userProps: SuggestedFiltersProps) {
31-
const { filters, onFilterClick, indexUiState, className } = userProps;
46+
const { filters, onFilterClick, indexUiState, classNames = {} } = userProps;
3247

3348
if (filters.length === 0) {
3449
return null;
@@ -44,9 +59,11 @@ export function createSuggestedFiltersComponent({
4459
};
4560

4661
return (
47-
<div className={cx('ais-ChatToolSuggestedFilters', className)}>
48-
<div className="ais-SuggestedFilters-header">Suggested Filters</div>
49-
<div className="ais-SuggestedFilters">
62+
<div className={cx('ais-ChatToolSuggestedFilters', classNames.root)}>
63+
<div className={cx('ais-SuggestedFilters-header', classNames.header)}>
64+
Suggested Filters
65+
</div>
66+
<div className={cx('ais-SuggestedFilters', classNames.list)}>
5067
{filters.map((filter) => {
5168
const refined = isRefined(filter.attribute, filter.value);
5269
return (

packages/instantsearch-ui-components/src/components/chat/ChatHeader.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ export type ChatHeaderClassNames = {
4747
* Class names to apply to the title icon element
4848
*/
4949
titleIcon?: string | string[];
50+
/**
51+
* Class names to apply to the actions container element
52+
*/
53+
actions?: string | string[];
5054
/**
5155
* Class names to apply to the maximize button element
5256
*/
@@ -159,7 +163,7 @@ export function createChatHeaderComponent({ createElement }: Renderer) {
159163
</span>
160164
{translations.title}
161165
</span>
162-
<div className={cx('ais-ChatHeader-actions')}>
166+
<div className={cx('ais-ChatHeader-actions', classNames.actions)}>
163167
{onClear && (
164168
<Button
165169
variant="ghost"

0 commit comments

Comments
 (0)