Skip to content

Commit 10d0d98

Browse files
committed
fix(core): escape custom classes for query selectors (fix #674)
1 parent 0b4047b commit 10d0d98

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

packages/examples/stories/SimpleBarReact.stories.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ WithScale.args = {
7575
style: { transform: 'scale(0.5)' },
7676
};
7777

78+
export const WithCustomClassNames = Template.bind({});
79+
WithCustomClassNames.args = {
80+
...SimpleBar.defaultOptions,
81+
classNames: {
82+
contentEl: 'simplebar-content max-h-[1rem]',
83+
},
84+
style: { height: 300 },
85+
};
86+
7887
const WithImageTemplate: StoryFn<{
7988
className: string;
8089
style: React.CSSProperties;

packages/simplebar-core/src/helpers.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,11 @@ export function removeClasses(el: HTMLElement | null, classes: string): void {
8484
}
8585

8686
export function classNamesToQuery(classNames: string): string {
87-
return `.${classNames.split(' ').join('.')}`;
87+
return `.${classNames.split(' ').map(escapeForQuerySelector).join('.')}`;
88+
}
89+
90+
export function escapeForQuerySelector(str: string): string {
91+
return str.replace(/([!\"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~])/g, '\\$1');
8892
}
8993

9094
export function mergeClassNames(

0 commit comments

Comments
 (0)