Skip to content

Commit 0e15f9c

Browse files
adding isVertical option
1 parent d357302 commit 0e15f9c

File tree

7 files changed

+38
-1
lines changed

7 files changed

+38
-1
lines changed

README.md

+26
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ React Dynamic Tabs with full API
3131
- [tabComponent](#tabComponent)
3232
- [defaultPanelComponent](#defaultPanelComponent)
3333
- [accessibility](#accessibility)
34+
- [isVertical](#isVertical)
3435
- [onLoad](#onLoad)
3536
- [onInit](#onInit)
3637
- [onChange](#onChange)
@@ -386,6 +387,31 @@ if (instance.getOption('accessibility') == true) {
386387

387388
This option assigns id attribute on panel element and button element inside the tab. for having elements without id attribute, set this option to false.
388389

390+
### isVertical
391+
392+
<table>
393+
<tbody>
394+
<tr>
395+
<th>type</th>
396+
<th>default value</th>
397+
<th>required</th>
398+
<th>description</th>
399+
</tr>
400+
<tr>
401+
<td>boolean</td>
402+
<td>false</td>
403+
<td>false</td>
404+
<td></td>
405+
</tr>
406+
</tbody>
407+
</table>
408+
409+
**Example**
410+
411+
```js
412+
const [TabList, PanelList, ready] = useDynTabs({isVertical: true});
413+
```
414+
389415
### onLoad
390416

391417
<table>

src/panelList/panelList.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ const PanelList = memo(
66
const {openTabIDs, selectedTabID} = React.useContext(StateContext),
77
api = React.useContext(ApiContext),
88
setting = api.optionsManager.setting,
9-
className = setting.panellistClass + ' ' + setting[api.getOption('direction') + 'Class'];
9+
options = api.optionsManager.options;
10+
let className = setting.panellistClass + ' ' + setting[options.direction + 'Class'];
11+
if (options.isVertical) {
12+
className += ' ' + setting.verticalClass;
13+
}
1014
return (
1115
<div className={className}>
1216
{openTabIDs.map((id) => (

src/tabList/tablistPropsManager.js

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ export default function ({api}) {
44
result = {
55
className: _setting.tablistClass + ' ' + _setting[_op.direction + 'Class'],
66
};
7+
if (_op.isVertical) {
8+
result.className += ' ' + _setting.verticalClass;
9+
}
710
if (_op.accessibility) {
811
result.role = 'tablist';
912
}

src/utils/api/optionManager/defaultOptions.js

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ DefaultOptions.prototype._getOptions = function () {
2525
onDestroy: function () {},
2626
onInit: function () {},
2727
accessibility: true,
28+
isVertical: false,
2829
defaultPanelComponent: function defaultPanelComponent() {
2930
return <div></div>;
3031
},

src/utils/api/optionManager/defaultOptions.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ describe('DefaultOptions.prototype.getOptions : ', () => {
1515
onDestroy: expect.any(Function),
1616
onInit: expect.any(Function),
1717
accessibility: true,
18+
isVertical: false,
1819
defaultPanelComponent: expect.any(Function),
1920
direction: 'ltr',
2021
tabComponent: expect.any(Function),

src/utils/api/optionManager/optionManager.factory.js

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ OptionManager.prototype._setSetting = function () {
8585
disableClass: 'rc-dyn-tabs-disable',
8686
ltrClass: 'rc-dyn-tabs-ltr',
8787
rtlClass: 'rc-dyn-tabs-rtl',
88+
verticalClass: 'rc-dyn-tabs-vertical',
8889
panelIdTemplate: (id) => `rc-dyn-tabs-p-${id}`,
8990
ariaLabelledbyIdTemplate: (id) => `rc-dyn-tabs-l-${id}`,
9091
getDefaultTabData: () => {

src/utils/api/optionManager/optionManager.test.js

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ describe('OptionManager constructor : ', () => {
5757
disableClass: 'rc-dyn-tabs-disable',
5858
ltrClass: 'rc-dyn-tabs-ltr',
5959
rtlClass: 'rc-dyn-tabs-rtl',
60+
verticalClass: 'rc-dyn-tabs-vertical',
6061
panelIdTemplate: expect.any(Function),
6162
ariaLabelledbyIdTemplate: expect.any(Function),
6263
getDefaultTabData: expect.any(Function),

0 commit comments

Comments
 (0)