项目作者: Swiggy

项目描述 :
React Tabs Component that supports Swiping across screen to switch tabs.
高级语言: TypeScript
项目地址: git://github.com/Swiggy/swipeable-tabs.git
创建时间: 2019-10-23T11:08:17Z
项目社区:https://github.com/Swiggy/swipeable-tabs

开源协议:MIT License

下载


Build Status
MIT License
Contributors

LinkedIn

Swipeable Tabs

Easy to incorporate and highly customizable Tabs Component for React, where tabs can be switched by swiping across the screen, as well as the conventional clicking on tab names way. Supports all types of devices.



Getting Started

Prerequisites

Following Peer Dependencies are required for using this library:

Installation

  1. npm install @tarragon/swipeable-tabs --save

or

  1. yarn add @tarragon/swipeable-tabs

Usage

Examples

Checkout the basic usage here.

Various customisations can also be added to the component like this.

Quick Usage

Make sure to have a state variable to determine the current selected Tab

  1. const [selectedTab, setSelectedTab] = React.useState(0);
  2. const changeTab: (selectedTab: {
  3. label: string;
  4. key: string | number;
  5. }) => void = updatedTab => {
  6. setSelectedTab(updatedTab.label);
  7. };

Import the Tabs component and pass the current selected tab value to it, along with onChange callback.
A number of Tab components can be passed as children of the Tabs component, to represent each of the tabs.

  1. <Tabs value={selectedTab} onChange={changeTab}>
  2. <Tab label="Tab 1" key={0}>
  3. <div>Tab 1 Content</div>
  4. </Tab>
  5. <Tab label="Tab 2" key={1}>
  6. <div>Tab 2 content</div>
  7. </Tab>
  8. <Tab label="Tab 3" key={2}>
  9. <div>Tab 3 content</div>
  10. </Tab>
  11. <Tab label="Tab 4" key={3}>
  12. <div>Tab 4 content</div>
  13. </Tab>
  14. </Tabs>

APIs

<Tabs ></Tabs>

Import

  1. import { Tabs } from "@tarragon/swipeable-tabs";

Props













































NameTypeDefaultDescription
valuestring-Label of the current selected tab.
onChangefunction-Tab change handler, return type: void, that receives the changed tab details, { label: string; key: string | number }
styleProps
{
fontFamily?: string;

barColor?: string;

headerTextColor?: string;

selectedHeaderTextColor?: string;

alignHeader?: “left” | “center” | “right”;

showInkBar?: boolean;

inkBarColor?: string;

activeInkBarColor?: string;

size?: “large” | “medium” | “small”;

tabPosition?: “top” | “bottom”;

justifyTabs?: “start” | “space-evenly”;

}
{
fontFamily: “sans-serif”,

barColor: “#8c7ae6”,

headerTextColor: “#fff”,

selectedHeaderTextColor: “#e6d5ec”,

alignHeader: “center”,

showInkBar: true,

inkBarColor: “white”,

activeInkBarColor: “#82589F”,

size: “medium”,

tabPosition: “top”,

justifyTabs: “space-evenly”
}
Design customisations
tabBarCSSstring“”Stringified CSS to further customise the tab bar. example, tabBarCSS = border-color: red 1px solid; color: black
tabItemCSSstring“”Stringified CSS to further customise individual tab item in the tab bar. example, tabItemCSS = text-align: left
blacklistedElement{
identifierType: “className” | “id” | “nodeName”;

identifierName: string;
}
undefinedEnables blacklisting certain nodes where swipe action would be disabled. Can be used if a tab content has a horizontal scrolling element.

<Tab ></Tab>

To be passed as child of Tabs component, where each <Tab></Tab> represents single tab, with its innerHTML as content of the tab

Import

  1. import { Tab } from "@tarragon/swipeable-tabs";

Props














NameTypeDefaultDescription
labelstring-Label of individual tab item.


<SwipeableViews ></SwipeableViews>

A Swipeable views component, that receives an array of elements as views, and enables horizontal swiping between them.

Import

  1. import { SwipeableViews } from "./@tarragon/swipeable-tabs";

Props






































NameTypeDefaultDescription
viewsJSX.Element[]-An array of elements, to be treated as views.
selectedViewnumber0Index of the view visible by default
onSwipe(selectedTab: number) => void-Callback function to be invoked on swipe between tabs. selectedTab is index of the view currently visible. Should update the selectedView prop.
inkBarRefReact.RefObject< HTMLHRElement>-Ref to an HR eleemnt, that can be used as an inkBar to denote position of current visible view
blacklistedElement{
identifierType: “className” | “id” | “nodeName”;

identifierName: string;
}
undefinedEnables blacklisting certain nodes where swipe action would be disabled. Can be used if a tab content has a horizontal scrolling element.

Built With

License

Distributed under the MIT License. See LICENSE for more information.