Skip to content

Commit 9810be3

Browse files
committed
create memoPanel.js, tab.js + delete panelProxy.js
+ make api inherited from tabs.js and pub_sub.js + remove setData() + rename reload() to refresh()
1 parent c592d7b commit 9810be3

File tree

17 files changed

+218
-288
lines changed

17 files changed

+218
-288
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { memo } from 'react';
2+
const MemoPanel = memo(function (props) {
3+
return props.childComponent;
4+
}, () => true);
5+
export default MemoPanel;

src/com/react-dynamic-tabs/panel/panel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const Panel = memo(function Panel(props) {
99
, panelProps = panelPropsManager.get({ isSelected: id === selectedTabID, api, id });
1010
return (
1111
<div {...panelProps}>
12-
{api.getPanel(id)}
12+
{api.getTab(id).panelComponent}
1313
</div>
1414
)
1515
}, (oldProps, newProps) => {

src/com/react-dynamic-tabs/tab/tab.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const Tab = memo(
66
function Tab(props) {
77
React.useContext(ForceUpdateContext);
88
const { id, selectedTabID } = props
9-
, api = React.useContext(ApiContext), op = api.getOptions(), tabObj = op.data[id]
9+
, api = React.useContext(ApiContext), op = api.getOptions(), tabObj = api.getTab(id)
1010
, propsManagerParam = { api, id, isSelected: selectedTabID === id }
1111
, clkHandler = function (e) { api.eventHandlerFactory({ e, id }); }
1212
, TabInnerComponent = op.tabComponent;

src/com/react-dynamic-tabs/tab/tab.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,10 @@ describe("calling tabDidMount and tabDidUpdate inside the useEffect", () => {
167167
function MockWrapprTab() {
168168
const [activeId, setActiveId] = useState({ id: '2' }), toggelActiveTab = (e) => {
169169
activeId === '2' ? setActiveId('1') : setActiveId('2');
170-
}, reload = id => { setActiveId({ id }); };
170+
}, refresh = id => { setActiveId({ id }); };
171171
return <>
172172
<button id='toggelActiveTabBtn' onClick={toggelActiveTab}></button>
173-
<button id='forceUpdateBtn' onClick={reload}></button>
173+
<button id='forceUpdateBtn' onClick={refresh}></button>
174174
<Tab selectedTabID={activeId} id="1"></Tab>
175175
<Tab selectedTabID={activeId} id="2"></Tab>
176176
<Tab selectedTabID={activeId} id="3"></Tab>

src/com/react-dynamic-tabs/tab/tabPropsManager/defaultTabInnerProps.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const DefaultTabInnerProps = Object.create({
22
get: function (param) {
33
const { id, isSelected, api } = param, { cssClasses, keyTemps } = api.getSetting(),
4-
userIconClass = api.getTabObj(id).iconClass;
4+
userIconClass = api.getTab(id).iconClass;
55
Object.assign(param, { a11y: api.getOptions().accessibility, cssClasses, keyTemps, userIconClass });
66
return {
77
id, isSelected, api,

src/com/react-dynamic-tabs/tab/tabPropsManager/tabProps.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const TabProps = Object.create({
22
get: function (param) {
33
const { api } = param, { cssClasses, keyTemps } = api.getSetting();
4-
Object.assign(param, { cssClasses, keyTemps, op: api.getOptions(), tabObj: api.getTabObj(param.id) });
4+
Object.assign(param, { cssClasses, keyTemps, op: api.getOptions(), tabObj: api.getTab(param.id) });
55
return this._getA11Y(this._getDisabled(this._getSelected(this._getBase(param), param), param), param);
66
},
77
_getBase: function ({ id, cssClasses, api }) {

src/com/react-dynamic-tabs/useDynamicTabs/index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@ function useDynamicTabs(options) {
1313
, [state, dispatch] = useReducer(reducer, api.getInitialState());
1414
api.updateReducer(state, dispatch);
1515
useLayoutEffect(() => {
16-
api.pub_sub.trigger('onLoad');
17-
return () => { api.pub_sub.trigger('onDestroy'); };
16+
api.trigger('onLoad');
17+
return () => { api.trigger('onDestroy'); };
1818
}, []);
1919
useLayoutEffect(() => {
2020
const oldState = api.getCopyPerviousData()
2121
, [openedTabsId, closedTabsId] = api.helper.getArraysDiff(state.openTabIDs, oldState.openTabIDs)
2222
, isSwitched = oldState.selectedTabID !== state.selectedTabID;
23-
api.pub_sub.trigger('onChange', { newState: state, oldState, closedTabsId, openedTabsId, isSwitched });
23+
api.trigger('onChange', { newState: state, oldState, closedTabsId, openedTabsId, isSwitched });
2424
}, [state]);
2525
if (!_ref.TabListComponent)
2626
_ref.TabListComponent = (props = {}) => {
2727
return (
2828
<ApiContext.Provider value={_ref.api}>
29-
<StateContext.Provider value={_ref.api._stateRef}>
29+
<StateContext.Provider value={_ref.api.stateRef}>
3030
<ForceUpdateContext.Provider value={_ref.api.forceUpdateState}>
3131
<TabList {...props}>props.children</TabList>
3232
</ForceUpdateContext.Provider>
@@ -37,7 +37,7 @@ function useDynamicTabs(options) {
3737
if (!_ref.PanelListCompoent)
3838
_ref.PanelListCompoent = props => (
3939
<ApiContext.Provider value={_ref.api}>
40-
<StateContext.Provider value={_ref.api._stateRef}>
40+
<StateContext.Provider value={_ref.api.stateRef}>
4141
<ForceUpdateContext.Provider value={_ref.api.forceUpdateState}>
4242
<PanelList {...props}>props.children</PanelList>
4343
</ForceUpdateContext.Provider>

0 commit comments

Comments
 (0)