Skip to content

Commit

Permalink
feat: Add typescript definitions (reactstrap#1976)
Browse files Browse the repository at this point in the history
* feat: Add typescript definitions

* Update yarn lock
  • Loading branch information
kyletsang committed Oct 19, 2020
1 parent c41b172 commit 2a47626
Show file tree
Hide file tree
Showing 89 changed files with 7,963 additions and 27 deletions.
12 changes: 10 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,18 @@
"cover": "npm test -- --coverage",
"start": "webpack-dev-server --config ./webpack.docs.config.js --watch",
"build:docs": "cross-env WEBPACK_BUILD=production webpack --config ./webpack.docs.config.js --progress --colors",
"build": "npm run build:lib && npm run build:esm && npm run build:umd",
"build": "npm run build:lib && npm run build:esm && npm run build:umd && npm run copy-dts",
"build:umd": "rollup -c",
"build:lib": "babel src --out-dir lib --ignore src/__tests__/",
"build:esm": "cross-env BABEL_ENV=esm-dir babel src --out-dir es --ignore src/__tests__/",
"postbuild": "node ./scripts/postbuild.js",
"create-release": "npm run cover && sh ./scripts/release",
"publish-release": "npm run cover && sh ./scripts/publish",
"lint": "eslint src"
"lint": "eslint src",
"dtslint": "dtslint types --expectOnly",
"copy-dts": "npm run copy-dts:lib && npm run copy-dts:esm",
"copy-dts:lib": "ncp types/lib lib",
"copy-dts:esm": "ncp types/lib es"
},
"repository": {
"type": "git",
Expand Down Expand Up @@ -273,6 +277,7 @@
"@babel/plugin-transform-runtime": "^7.2.0",
"@babel/preset-env": "^7.2.3",
"@babel/preset-react": "^7.0.0",
"@types/react": "^16.9.51",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.4",
"bootstrap": "^4.4.1",
Expand All @@ -284,6 +289,7 @@
"cross-env": "^2.0.0",
"css-loader": "^2.1.0",
"customize-cra": "^0.2.8",
"dtslint": "^4.0.4",
"ejs": "^2.5.9",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.2",
Expand All @@ -297,6 +303,7 @@
"holderjs": "^2.9.3",
"json-loader": "^0.5.7",
"mini-css-extract-plugin": "^0.9.0",
"ncp": "^2.0.0",
"raw-loader": "^1.0.0",
"react": "^16.3.2",
"react-app-rewired": "^1.6.2",
Expand All @@ -314,6 +321,7 @@
"rollup-plugin-replace": "^2.1.0",
"static-site-generator-webpack-plugin": "^3.4.2",
"style-loader": "^0.23.1",
"typescript": "^4.0.3",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0"
Expand Down
182 changes: 182 additions & 0 deletions types/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
export interface CSSModule {
[className: string]: string;
}

export { default as Alert } from './lib/Alert';
export { AlertProps } from './lib/Alert';
export { default as Badge } from './lib/Badge';
export { BadgeProps } from './lib/Badge';
export { default as Breadcrumb } from './lib/Breadcrumb';
export { BreadcrumbProps } from './lib/Breadcrumb';
export { default as BreadcrumbItem } from './lib/BreadcrumbItem';
export { BreadcrumbItemProps } from './lib/BreadcrumbItem';
export { default as Button } from './lib/Button';
export { ButtonProps } from './lib/Button';
export { default as ButtonDropdown } from './lib/ButtonDropdown';
export { ButtonDropdownProps } from './lib/ButtonDropdown';
export { default as ButtonGroup } from './lib/ButtonGroup';
export { ButtonGroupProps } from './lib/ButtonGroup';
export { default as ButtonToggle } from './lib/ButtonToggle';
export { ButtonToggleProps } from './lib/ButtonToggle';
export { default as ButtonToolbar } from './lib/ButtonToolbar';
export { ButtonToolbarProps } from './lib/ButtonToolbar';
export { default as Card } from './lib/Card';
export { CardProps } from './lib/Card';
export { default as CardBody } from './lib/CardBody';
export { CardBodyProps } from './lib/CardBody';
export { default as CardColumns } from './lib/CardColumns';
export { CardColumnsProps } from './lib/CardColumns';
export { default as CardDeck } from './lib/CardDeck';
export { CardDeckProps } from './lib/CardDeck';
export { default as CardFooter } from './lib/CardFooter';
export { CardFooterProps } from './lib/CardFooter';
export { default as CardGroup } from './lib/CardGroup';
export { CardGroupProps } from './lib/CardGroup';
export { default as CardHeader } from './lib/CardHeader';
export { CardHeaderProps } from './lib/CardHeader';
export { default as CardImg } from './lib/CardImg';
export { CardImgProps } from './lib/CardImg';
export { default as CardImgOverlay } from './lib/CardImgOverlay';
export { CardImgOverlayProps } from './lib/CardImgOverlay';
export { default as CardLink } from './lib/CardLink';
export { CardLinkProps } from './lib/CardLink';
export { default as CardSubtitle } from './lib/CardSubtitle';
export { CardSubtitleProps } from './lib/CardSubtitle';
export { default as CardText } from './lib/CardText';
export { CardTextProps } from './lib/CardText';
export { default as CardTitle } from './lib/CardTitle';
export { CardTitleProps } from './lib/CardTitle';
export { default as Carousel } from './lib/Carousel';
export { CarouselProps } from './lib/Carousel';
export { default as CarouselItem } from './lib/CarouselItem';
export { CarouselItemProps } from './lib/CarouselItem';
export { default as CarouselControl } from './lib/CarouselControl';
export { CarouselControlProps } from './lib/CarouselControl';
export { default as CarouselIndicators } from './lib/CarouselIndicators';
export { CarouselIndicatorsProps } from './lib/CarouselIndicators';
export { default as CarouselCaption } from './lib/CarouselCaption';
export { CarouselCaptionProps } from './lib/CarouselCaption';
export { default as Col } from './lib/Col';
export { ColProps } from './lib/Col';
export { default as Collapse } from './lib/Collapse';
export { CollapseProps } from './lib/Collapse';
export { default as Container } from './lib/Container';
export { ContainerProps } from './lib/Container';
export { default as CustomInput } from './lib/CustomInput';
export { CustomInputProps } from './lib/CustomInput';
export { default as Dropdown } from './lib/Dropdown';
export { DropdownProps } from './lib/Dropdown';
export { default as DropdownItem } from './lib/DropdownItem';
export { DropdownItemProps } from './lib/DropdownItem';
export { default as DropdownMenu } from './lib/DropdownMenu';
export { DropdownMenuProps } from './lib/DropdownMenu';
export { default as DropdownToggle } from './lib/DropdownToggle';
export { DropdownToggleProps } from './lib/DropdownToggle';
export { default as Fade } from './lib/Fade';
export { FadeProps } from './lib/Fade';
export { default as Form } from './lib/Form';
export { FormProps } from './lib/Form';
export { default as FormFeedback } from './lib/FormFeedback';
export { FormFeedbackProps } from './lib/FormFeedback';
export { default as FormGroup } from './lib/FormGroup';
export { FormGroupProps } from './lib/FormGroup';
export { default as FormText } from './lib/FormText';
export { FormTextProps } from './lib/FormText';
export { default as Input } from './lib/Input';
export { InputProps } from './lib/Input';
export { default as InputGroup } from './lib/InputGroup';
export { InputGroupProps } from './lib/InputGroup';
export { default as InputGroupAddon } from './lib/InputGroupAddon';
export { InputGroupAddonProps } from './lib/InputGroupAddon';
export { default as InputGroupButtonDropdown } from './lib/InputGroupButtonDropdown';
export { InputGroupButtonDropdownProps } from './lib/InputGroupButtonDropdown';
export { default as InputGroupText } from './lib/InputGroupText';
export { InputGroupTextProps } from './lib/InputGroupText';
export { default as Jumbotron } from './lib/Jumbotron';
export { JumbotronProps } from './lib/Jumbotron';
export { default as Label } from './lib/Label';
export { LabelProps } from './lib/Label';
export { default as ListGroup } from './lib/ListGroup';
export { ListGroupProps } from './lib/ListGroup';
export { default as ListGroupItem } from './lib/ListGroupItem';
export { ListGroupItemProps } from './lib/ListGroupItem';
export { default as ListGroupItemHeading } from './lib/ListGroupItemHeading';
export { ListGroupItemHeadingProps } from './lib/ListGroupItemHeading';
export { default as ListGroupItemText } from './lib/ListGroupItemText';
export { ListGroupItemTextProps } from './lib/ListGroupItemText';
export { default as Media } from './lib/Media';
export { MediaProps } from './lib/Media';
export { default as Modal } from './lib/Modal';
export { ModalProps } from './lib/Modal';
export { default as ModalBody } from './lib/ModalBody';
export { ModalBodyProps } from './lib/ModalBody';
export { default as ModalFooter } from './lib/ModalFooter';
export { ModalFooterProps } from './lib/ModalFooter';
export { default as ModalHeader } from './lib/ModalHeader';
export { ModalHeaderProps } from './lib/ModalHeader';
export { default as Nav } from './lib/Nav';
export { NavProps } from './lib/Nav';
export { default as Navbar } from './lib/Navbar';
export { NavbarProps } from './lib/Navbar';
export { default as NavbarBrand } from './lib/NavbarBrand';
export { NavbarBrandProps } from './lib/NavbarBrand';
export { default as NavbarText } from './lib/NavbarText';
export { NavbarTextProps } from './lib/NavbarText';
export { default as NavbarToggler } from './lib/NavbarToggler';
export { NavbarTogglerProps } from './lib/NavbarToggler';
export { default as NavItem } from './lib/NavItem';
export { NavItemProps } from './lib/NavItem';
export { default as NavLink } from './lib/NavLink';
export { NavLinkProps } from './lib/NavLink';
export { default as Pagination } from './lib/Pagination';
export { PaginationProps } from './lib/Pagination';
export { default as PaginationItem } from './lib/PaginationItem';
export { PaginationItemProps } from './lib/PaginationItem';
export { default as PaginationLink } from './lib/PaginationLink';
export { PaginationLinkProps } from './lib/PaginationLink';
export { default as Popover } from './lib/Popover';
export { PopoverProps } from './lib/Popover';
export { default as PopoverBody } from './lib/PopoverBody';
export { PopoverBodyProps } from './lib/PopoverBody';
export { default as PopoverHeader } from './lib/PopoverHeader';
export { PopoverHeaderProps } from './lib/PopoverHeader';
export { default as Progress } from './lib/Progress';
export { ProgressProps } from './lib/Progress';
export { default as Row } from './lib/Row';
export { RowProps } from './lib/Row';
export { default as Spinner } from './lib/Spinner';
export { SpinnerProps } from './lib/Spinner';
export { default as TabContent } from './lib/TabContent';
export { TabContentProps } from './lib/TabContent';
export { default as Table } from './lib/Table';
export { TableProps } from './lib/Table';
export { default as TabPane } from './lib/TabPane';
export { TabPaneProps } from './lib/TabPane';
export { default as Tag } from './lib/Tag';
export { TagProps } from './lib/Tag';
export { default as Toast } from './lib/Toast';
export { ToastProps } from './lib/Toast';
export { default as ToastBody } from './lib/ToastBody';
export { ToastBodyProps } from './lib/ToastBody';
export { default as ToastHeader } from './lib/ToastHeader';
export { ToastHeaderProps } from './lib/ToastHeader';
export { default as Tooltip } from './lib/Tooltip';
export { TooltipProps } from './lib/Tooltip';
export {
UncontrolledAlert,
UncontrolledButtonDropdown,
UncontrolledDropdown,
UncontrolledTooltip,
UncontrolledCollapse,
UncontrolledCarousel,
UncontrolledPopover,
UncontrolledButtonDropdownProps,
UncontrolledAlertProps,
UncontrolledDropdownProps,
UncontrolledTooltipProps,
UncontrolledCollapseProps,
UncontrolledCarouselProps,
UncontrolledPopoverProps
} from './lib/Uncontrolled';
import * as Util from './lib/utils';
export { Util };
23 changes: 23 additions & 0 deletions types/lib/Alert.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import * as React from 'react';
import { CSSModule } from './index';
import { FadeProps } from './Fade';

export interface UncontrolledAlertProps
extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
closeClassName?: string;
closeAriaLabel?: string;
cssModule?: CSSModule;
color?: string;
fade?: boolean;
tag?: React.ElementType;
transition?: FadeProps;
innerRef?: React.Ref<HTMLElement>;
}
export interface AlertProps extends UncontrolledAlertProps {
isOpen?: boolean;
toggle?: React.MouseEventHandler<any>;
}

declare class Alert extends React.Component<AlertProps> {}
export default Alert;
14 changes: 14 additions & 0 deletions types/lib/Badge.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface BadgeProps extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
color?: string;
pill?: boolean;
tag?: React.ElementType;
innerRef?: React.Ref<HTMLElement>;
cssModule?: CSSModule;
}

declare class Badge extends React.Component<BadgeProps> {}
export default Badge;
13 changes: 13 additions & 0 deletions types/lib/Breadcrumb.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
tag?: React.ElementType;
listTag?: React.ElementType;
listClassName?: string;
cssModule?: CSSModule;
}

declare class Breadcrumb extends React.Component<BreadcrumbProps> {}
export default Breadcrumb;
12 changes: 12 additions & 0 deletions types/lib/BreadcrumbItem.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface BreadcrumbItemProps extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
tag?: React.ElementType;
active?: boolean;
cssModule?: CSSModule;
}

declare class BreadcrumbItem extends React.Component<BreadcrumbItemProps> {}
export default BreadcrumbItem;
19 changes: 19 additions & 0 deletions types/lib/Button.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface ButtonProps
extends React.ButtonHTMLAttributes<HTMLButtonElement> {
[key: string]: any;
outline?: boolean;
active?: boolean;
block?: boolean;
color?: string;
tag?: React.ElementType;
innerRef?: React.Ref<HTMLButtonElement>;
size?: string;
cssModule?: CSSModule;
close?: boolean;
}

declare class Button extends React.Component<ButtonProps> {}
export default Button;
9 changes: 9 additions & 0 deletions types/lib/ButtonDropdown.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import * as React from 'react';
import { UncontrolledDropdownProps, DropdownProps } from './Dropdown';
export {
UncontrolledDropdownProps as UncontrolledButtonDropdownProps,
DropdownProps as ButtonDropdownProps,
};

declare class ButtonDropdown extends React.Component<DropdownProps> {}
export default ButtonDropdown;
13 changes: 13 additions & 0 deletions types/lib/ButtonGroup.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface ButtonGroupProps extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
tag?: React.ElementType;
cssModule?: CSSModule;
size?: string;
vertical?: boolean;
}

declare class ButtonGroup extends React.Component<ButtonGroupProps> {}
export default ButtonGroup;
12 changes: 12 additions & 0 deletions types/lib/ButtonToggle.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import * as React from 'react';

type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;

export interface ButtonToggleProps
extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'defaultValue'> {
[key: string]: any;
defaultValue?: boolean;
}

declare class ButtonToggle extends React.Component<ButtonToggleProps> {}
export default ButtonToggle;
11 changes: 11 additions & 0 deletions types/lib/ButtonToolbar.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface ButtonToolbarProps extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
tag?: React.ElementType;
cssModule?: CSSModule;
}

declare class ButtonToolbar extends React.Component<ButtonToolbarProps> {}
export default ButtonToolbar;
16 changes: 16 additions & 0 deletions types/lib/Card.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import * as React from 'react';
import { CSSModule } from './index';

export interface CardProps extends React.HTMLAttributes<HTMLElement> {
[key: string]: any;
tag?: React.ElementType;
inverse?: boolean;
color?: string;
body?: boolean;
outline?: boolean;
cssModule?: CSSModule;
innerRef?: React.Ref<HTMLElement>;
}

declare class Card extends React.Component<CardProps> {}
export default Card;

0 comments on commit 2a47626

Please sign in to comment.