Installations
npm install rc-tabs
Developer
Developer Guide
Module System
CommonJS
Min. Node Version
>=8.x
Typescript Support
Yes
Node Version
22.5.1
NPM Version
10.8.2
Statistics
566 Stars
671 Commits
233 Forks
15 Watching
16 Branches
90 Contributors
Updated on 26 Nov 2024
Bundle Size
104.82 kB
Minified
36.12 kB
Minified + Gzipped
Languages
TypeScript (92.2%)
Less (4.2%)
JavaScript (3.6%)
Total Downloads
Cumulative downloads
Total Downloads
224,614,968
Last day
-6.5%
295,618
Compared to previous day
Last week
3.9%
1,577,367
Compared to previous week
Last month
11.4%
6,438,761
Compared to previous month
Last year
20.7%
65,684,387
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Dev Dependencies
33
rc-tabs
React Tabs component.
Screenshot
Example
http://localhost:8000/examples
online example: https://tabs.react-component.now.sh/
install
Feature
Keyboard
- left and up: tabs to previous tab
- right and down: tabs to next tab
Usage
1import Tabs from 'rc-tabs'; 2import ReactDom from 'react-dom'; 3 4const callback = (key) => { 5 console.log(key); 6}; 7 8const items = [ 9 { 10 key: '1', 11 label: 'Google', 12 children: ( 13 <div className="text-xl"> 14 <p>Lorem Ipsum is simply dummy text of the printing and typesetting</p> 15 </div> 16 ), 17 }, 18 { 19 key: '2', 20 label: <p>Amazon</p>, 21 children: 22 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...', 23 disabled: true, 24 }, 25 { 26 key: '3', 27 label: <p>Twitter</p>, 28 children: ( 29 <div> 30 "There is no one who loves pain itself, who seeks after it and wants to have it, simply 31 because it is pain..." 32 </div> 33 ), 34 }, 35]; 36 37ReactDom.render( 38 <Tabs 39 tabPosition="bottom" 40 items={items} 41 defaultActiveKey="1" 42 className="md:w-[70%] w-full mx-auto p-2 border-0" 43 onChange={callback} 44 style={{ color: 'yellow' }} 45 />, 46 root, 47);
API
Tabs
name | type | default | description |
---|---|---|---|
prefixCls | string | 'rc-tabs' | prefix class name, use to custom style |
className | string | - | to define a class name for an element |
style | CSS properties | - | object with css properties for styling |
items | TabItem[] | [] | configure tab content |
id | string | - | unique identifier |
defaultActiveKey | string | - | initial active tabPanel's key if activeKey is absent |
activeKey | string | - | current active tabPanel's key |
direction | 'ltr' or 'rtl' | 'ltr' | Layout direction of tabs component |
animated | boolean | { inkBar: boolean, tabPane: boolean } | { inkBar: true, tabPane: false } | config animation |
renderTabBar | (props, TabBarComponent) => ReactElement | - | How to render tab bar |
tabBarExtraContent | ReactNode | { left: ReactNode, right: ReactNode } | - | config extra content |
tabBarGutter | number | 0 | config tab bar gutter |
tabBarPosition | 'left' | 'right' | 'top' | 'bottom' | 'top' | tab nav 's position |
tabBarStyle | style | - | tab nav style |
tabPosition | 'left' or 'right' or 'top' or 'bottom' | 'top' | tab nav 's position |
destroyInactiveTabPane | boolean | false | whether destroy inactive TabPane when change tab |
onChange | (key) => void | - | called when tabPanel is changed |
onTabClick | (key) => void | - | called when tab click |
onTabScroll | ({ direction }) => void | - | called when tab scroll |
editable | { onEdit(type: 'add' | 'remove', info: { key, event }), showAdd: boolean, removeIcon: ReactNode, addIcon: ReactNode } | - | config tab editable |
locale | { dropdownAriaLabel: string, removeAriaLabel: string, addAriaLabel: string } | - | Accessibility locale help text |
moreIcon | ReactNode | - | collapse icon |
TabItem
name | type | default | description |
---|---|---|---|
key | string | - | corresponding to activeKey, should be unique |
label | string | - | TabPane's head display text |
tab | ReactNode | - | current tab's title corresponding to current tabPane |
className | string | - | to define a class name for an element |
style | CSS properties | - | object with css properties for styling |
disabled | boolean | false | set TabPane disabled |
children | ReactNode | - | TabPane's head display content |
forceRender | boolean | false | forced render of content in tabs, not lazy render after clicking on tabs |
closable | boolean | false | closable feature of tab item |
closeIcon | ReactNode | - | Config close icon |
prefixCls | string | 'rc-tabs-tab' | prefix class name, use to custom style |
id | string | - | unique identifier |
animated | boolean | { inkBar: boolean, tabPane: boolean } | { inkBar: true, tabPane: false } | config animation |
destroyInactiveTabPane | boolean | false | whether destroy inactive TabPane when change tab |
active | boolean | false | active feature of tab item |
tabKey | string | - | key linked to tab |
TabPane(support in older versions)
name | type | default | description |
---|---|---|---|
destroyInactiveTabPane | boolean | false | whether destroy inactive TabPane when change tab |
key | string | - | corresponding to activeKey, should be unique |
forceRender | boolean | false | forced render of content in tabs, not lazy render after clicking on tabs |
tab | ReactNode | - | current tab's title corresponding to current tabPane |
closeIcon | ReactNode | - | Config close icon |
Development
npm install
npm start
Test Case
npm test
npm run chrome-test
Coverage
npm run coverage
open coverage/ dir
License
rc-tabs is released under the MIT license.
FAQ
Responsive Tabs
There are 3 cases when handling responsive tabs:
We get hidden tabs through useVisibleRange.ts.
If enconter the third case, in order to make tabs responsive, some tabs should be hidden.
So we minus addSize
when calculating basicSize
manully, even though there's no addNode in container.
In this way, case 3 turns to case 2, tabs become stable again.
No vulnerabilities found.
Reason
13 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
license file detected
Details
- Info: project has a license file: LICENSE.md:0
- Info: FSF or OSI recognized license: MIT License: LICENSE.md:0
Reason
SAST tool is not run on all commits -- score normalized to 4
Details
- Warn: 7 commits out of 17 are checked with a SAST tool
Reason
Found 9/23 approved changesets -- score normalized to 3
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: no topLevel permission defined: .github/workflows/main.yml:1
- Info: no jobLevel write permissions found
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
branch protection not enabled on development/release branches
Details
- Warn: branch protection not enabled for branch 'master'
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Score
5.2
/10
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More