Skip to content

Commit d043f6c

Browse files
author
Tomasz John
committed
- update: react-popper v 2.1 added
- update: CDropdown, CDropdownMenu, CDropdownToggle update - fix: CToggler classes with prefix c- replace old classes
1 parent ef92bac commit d043f6c

File tree

6 files changed

+86
-18
lines changed

6 files changed

+86
-18
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"link": "npm link && link.sh"
4141
},
4242
"dependencies": {
43+
"@popperjs/core": "^2.2.1",
4344
"classnames": "^2.2.6",
4445
"core-js": "^3.6.4",
4546
"lodash.isfunction": "^3.0.9",

src/CDropdown.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ const CDropdown = props=>{
3131

3232
//render
3333

34-
return <CDropdownCustom {...attributes} show={show} toggle={toggle} />;
34+
return <CDropdownCustom
35+
{...attributes}
36+
show={show}
37+
toggle={toggle}
38+
/>;
3539

3640
}
3741

src/CDropdownCustom.js

+24-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ const CDropdownCustom = props=>{
194194

195195
const direction = props.direction; //(props.direction === 'down' && dropup) ? 'up' :
196196

197-
attributes.tag = attributes.tag || (inNav ? 'li' : 'div');
197+
//attributes.tag
198+
let Tag = attributes.tag || (inNav ? 'li' : 'div');
198199

199200
let subItemIsActive = false;
200201

@@ -221,6 +222,27 @@ const CDropdownCustom = props=>{
221222
}
222223
), cssModule);
223224

225+
return (
226+
<Context.Provider value={{
227+
toggle: props.toggle,
228+
isOpen: props.show,
229+
direction: props.direction, //(props.direction === 'down' && props.dropup) ? 'up' :
230+
inNavbar: props.inNavbar,
231+
}}>
232+
<Tag
233+
{...attributes}
234+
className={classes}
235+
onKeyDown={handleKeyDown}
236+
ref={reference}
237+
>
238+
<Manager>
239+
{props.children}
240+
</Manager>
241+
</Tag>
242+
</Context.Provider>
243+
);
244+
245+
/*
224246
return (
225247
<Context.Provider value={{
226248
toggle: props.toggle,
@@ -238,6 +260,7 @@ const CDropdownCustom = props=>{
238260
</CPopperContentWrapper>
239261
</Context.Provider>
240262
);
263+
*/
241264

242265
}
243266

src/CDropdownMenu.js

+31-11
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const CDropdownMenu = props=>{
1111

1212
const {
1313
className,
14+
children,
1415
cssModule,
1516
right,
1617
tag,
@@ -44,29 +45,48 @@ const CDropdownMenu = props=>{
4445
), cssModule);
4546

4647
let Tag = tag;
48+
let placement;
49+
let myModifiers = modifiers;
4750

4851
if (persist || (context.isOpen && !context.inNavbar)) {
4952
Tag = Popper;
5053
const position1 = directionPositionMap[context.direction] || 'bottom';
5154
const position2 = right ? 'end' : 'start';
52-
attributes.placement = `${position1}-${position2}`;
53-
attributes.component = tag;
54-
attributes.modifiers = !flip ? {
55+
placement = `${position1}-${position2}`;
56+
//attributes.component = tag;
57+
myModifiers = !flip ? {
5558
...modifiers,
5659
...noFlipModifier,
5760
} : modifiers;
5861
}
5962

63+
/*
64+
x-placement={attributes.placement}
65+
ref={innerRef}
66+
*/
6067
return (
6168
<Tag
62-
tabIndex="-1"
63-
role="menu"
64-
{...attributes}
65-
aria-hidden={!context.isOpen}
66-
className={classes}
67-
x-placement={attributes.placement}
68-
ref={innerRef}
69-
/>
69+
placement = {placement}
70+
modifiers = {myModifiers}
71+
>
72+
{({ ref, style, placement, arrowProps }) => {
73+
//console.log(style, children);
74+
return (
75+
<div
76+
{...attributes}
77+
tabIndex="-1"
78+
role="menu"
79+
aria-hidden={!context.isOpen}
80+
className={classes}
81+
82+
ref={ref}
83+
data-placement={placement}
84+
>
85+
{children}
86+
</div>
87+
)}
88+
}
89+
</Tag>
7090
);
7191

7292
}

src/CDropdownToggle.js

+23-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import React, {useContext} from 'react';
22
import PropTypes from 'prop-types';
33
import classNames from 'classnames';
44
import {tagPropType, mapToCssModules} from './Shared/helper.js';
5-
import {Target} from 'react-popper';
5+
import {Reference} from 'react-popper';
66
import CButton from './CButton';
77
import {Context} from './CDropdownCustom';
8+
import CHeaderNavLink from './CHeaderNavLink';
89

910
//component - CoreUI / CDropdownToggle
1011

@@ -14,6 +15,7 @@ const CDropdownToggle = props=>{
1415
className,
1516
color,
1617
cssModule,
18+
1719
//
1820
innerRef,
1921
caret,
@@ -24,7 +26,7 @@ const CDropdownToggle = props=>{
2426
togglerHtml,
2527
...attributes
2628
} = props;
27-
29+
2830
const context = useContext(Context);
2931

3032
const onClick = e=>{
@@ -98,6 +100,24 @@ const CDropdownToggle = props=>{
98100
);
99101
}
100102

103+
return (
104+
<Reference>
105+
{({ ref }) => (
106+
<Tag
107+
ref={ref}
108+
{...attributes}
109+
className={classes}
110+
onClick={onClick}
111+
aria-expanded={context.isOpen}
112+
ref={innerRef}
113+
>
114+
{children}
115+
</Tag>
116+
)}
117+
</Reference>
118+
);
119+
120+
/*
101121
return (
102122
<Target
103123
{...attributes}
@@ -110,7 +130,7 @@ const CDropdownToggle = props=>{
110130
{children}
111131
</Target>
112132
);
113-
133+
*/
114134
}
115135

116136
CDropdownToggle.propTypes = {

src/CToggler.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ const CToggler = props=>{
3939

4040
const classes = mapToCssModules(classNames(
4141
className,
42-
togglerType ? `${togglerType}-toggler` : null,
42+
togglerType ? `c-${togglerType}-toggler` : null,
4343
), cssModule);
4444

4545
if (!custom){
4646
const classesTrigger = mapToCssModules(classNames(
47-
togglerType ? `${togglerType}-toggler-icon` : null,
47+
togglerType ? `c-${togglerType}-toggler-icon` : null,
4848
), cssModule);
4949
return (
5050
<Tag {...attributes} className={classes} onClick={onClick}>

0 commit comments

Comments
 (0)