Skip to content

Commit 729440e

Browse files
authored
feat: classNames (#205)
* fix: className should be always on root element * feat: add classNames * chore: fix * chore: fix lint
1 parent 07d13ad commit 729440e

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@
4848
"@babel/runtime": "^7.22.5",
4949
"@rc-component/trigger": "^1.5.0",
5050
"classnames": "^2.2.6",
51-
"rc-input": "~1.3.5",
51+
"rc-input": "~1.4.0",
5252
"rc-menu": "~9.12.0",
53-
"rc-textarea": "~1.5.0",
53+
"rc-textarea": "~1.6.1",
5454
"rc-util": "^5.34.1"
5555
},
5656
"devDependencies": {

src/Mentions.tsx

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323

2424
type BaseTextareaAttrs = Omit<
2525
TextAreaProps,
26-
'prefix' | 'onChange' | 'onSelect' | 'showCount'
26+
'prefix' | 'onChange' | 'onSelect' | 'showCount' | 'classNames'
2727
>;
2828

2929
export type Placement = 'top' | 'bottom';
@@ -59,6 +59,10 @@ export interface MentionsProps extends BaseTextareaAttrs {
5959
open?: boolean;
6060
children?: React.ReactNode;
6161
options?: DataDrivenOptionProps[];
62+
classNames?: {
63+
mentions?: string;
64+
affixWrapper?: string;
65+
};
6266
}
6367

6468
export interface MentionsRef {
@@ -480,11 +484,12 @@ const Mentions = forwardRef<MentionsRef, MentionsProps>(
480484
{
481485
suffix,
482486
prefixCls = 'rc-mentions',
483-
classes,
484487
defaultValue,
485488
value: customValue,
486489
allowClear,
487490
onChange,
491+
classNames: classes,
492+
className,
488493
...rest
489494
},
490495
ref,
@@ -508,21 +513,22 @@ const Mentions = forwardRef<MentionsRef, MentionsProps>(
508513

509514
return (
510515
<BaseInput
511-
inputElement={
512-
<InternalMentions
513-
prefixCls={prefixCls}
514-
ref={ref}
515-
onChange={triggerChange}
516-
{...rest}
517-
/>
518-
}
519516
suffix={suffix}
520517
prefixCls={prefixCls}
521-
classes={classes}
522518
value={mergedValue}
523519
allowClear={allowClear}
524520
handleReset={handleReset}
525-
/>
521+
className={className}
522+
classNames={classes}
523+
>
524+
<InternalMentions
525+
className={classes?.mentions}
526+
prefixCls={prefixCls}
527+
ref={ref}
528+
onChange={triggerChange}
529+
{...rest}
530+
/>
531+
</BaseInput>
526532
);
527533
},
528534
) as React.ForwardRefExoticComponent<

tests/Mentions.spec.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,14 @@ describe('Mentions', () => {
264264
const { container } = render(createMentions({ ref }));
265265
expect(ref.current.textarea).toBe(container.querySelector('textarea'));
266266
});
267+
268+
it('className should always on the root element', () => {
269+
const ref = createRef<MentionsRef>();
270+
const { container, rerender } = render(
271+
createMentions({ ref, className: 'test-cls' }),
272+
);
273+
expect(container.firstChild).toHaveClass('test-cls');
274+
rerender(createMentions({ ref, className: 'test-cls', suffix: '123' }));
275+
expect(container.firstChild).toHaveClass('test-cls');
276+
});
267277
});

0 commit comments

Comments
 (0)