Skip to content

Commit 2cafeb7

Browse files
adding moreButtonPlugin_iconComponent option
1 parent 396fca4 commit 2cafeb7

File tree

4 files changed

+30
-16
lines changed

4 files changed

+30
-16
lines changed

src/plugins/moreButtonPlugin/button/button.js

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import React, {useState, useCallback, useRef, useEffect, useLayoutEffect} from 'react';
1+
import React, { useState, useCallback, useRef, useEffect, useLayoutEffect } from 'react';
22
import PropTypes from 'prop-types';
33
export default function Button(getDeps, props) {
4-
const {Popper, Api} = getDeps();
4+
const { Popper, Api } = getDeps();
55
const [open, setOpen] = useState(false);
66
const closePopper = useCallback(() => setOpen(false), []);
77
const btnRef = useRef();
@@ -18,24 +18,20 @@ export default function Button(getDeps, props) {
1818
const onClick = useCallback(
1919
(ev) => {
2020
ev.stopPropagation();
21-
window.document.removeEventListener('click', closePopper, {once: true});
22-
window.document.addEventListener('click', closePopper, {once: true});
21+
window.document.removeEventListener('click', closePopper, { once: true });
22+
window.document.addEventListener('click', closePopper, { once: true });
2323
setOpen(!open);
2424
return () => {
25-
window.document.removeEventListener('click', closePopper, {once: true});
25+
window.document.removeEventListener('click', closePopper, { once: true });
2626
};
2727
},
2828
[open],
2929
);
30+
const IconComponent = props.instance.optionsManager.options.moreButtonPlugin_iconComponent;
3031
return (
3132
<>
3233
<div {...ref.current.btnPropsGenerator(onClick, btnRef, open)}>
33-
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512" title="More tabs">
34-
<path
35-
fill="gray"
36-
d="M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"
37-
/>
38-
</svg>
34+
<IconComponent instance={props.instance} />
3935
</div>
4036
{open ? <Popper {...props} TabsComponent={ref.current.TabsComponent} ref={popperRef} btnRef={btnRef} /> : null}
4137
</>

src/plugins/moreButtonPlugin/icon.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react';
2+
import PropTypes from 'prop-types';
3+
export default function MoreButtonPlugin_iconComponent(props) {
4+
const style = {};
5+
if (props.instance.optionsManager.options.direction === 'rtl') {
6+
style.transform = 'rotate(180deg)';
7+
}
8+
return (
9+
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512" title="More tabs" style={style}>
10+
<path
11+
fill="gray"
12+
d="M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"
13+
/>
14+
</svg>
15+
);
16+
}
17+
MoreButtonPlugin_iconComponent.propTypes /* remove-proptypes */ = {
18+
instance: PropTypes.object,
19+
};

src/plugins/moreButtonPlugin/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from 'react';
22
import ShowMoreTabs from './show-more-tabs/index.js';
33
import moreButtonPlugin_buttonComponent from './button/index.js';
4+
import moreButtonPlugin_iconComponent from './icon.js';
45
import PropTypes from 'prop-types';
56

67
function ShowMoreButton(deps, props) {
@@ -38,7 +39,8 @@ function setTablistView(ctx, components) {
3839
}
3940
function setDefaultOptions(ctx) {
4041
ctx.optionsManager.options = Object.assign({
41-
moreButtonPlugin_buttonComponent
42+
moreButtonPlugin_buttonComponent,
43+
moreButtonPlugin_iconComponent
4244
}, ctx.optionsManager.options);
4345
};
4446
export default function ResponsiveFactory(ctx, components) {

src/plugins/moreButtonPlugin/show-more-tabs/show-more-tabs.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ export default function ShowMoreTabs(getDeps, props) {
44
const {
55
components,
66
components: { useRootState, useForceUpdate },
7-
ctx,
8-
ctx: {
9-
optionsManager: { options },
10-
},
7+
ctx
118
} = props;
129
useForceUpdate();
1310
const { openTabIDs, selectedTabID } = useRootState();

0 commit comments

Comments
 (0)