diff --git a/package.json b/package.json index 72796fdfe..4aa098952 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "storybook": "start-storybook -s ./node_modules/@salesforce-ux/design-system -p 9001 -c .storybook", "test": "npm-run-all type-check test:jest test:storyshots", "test:storyshots": "NODE_ENV=test jest test/storyshots/*.test.js", - "test:jest": "jest test/*-spec.js", + "test:jest": "jest test/*-spec.js test/*-spec.tsx", "prepublish": "npm run build", "type-check": "tsc --noEmit", "type-check:watch": "npm run type-check -- --watch", @@ -107,7 +107,7 @@ "@types/react": "^16.8.12" }, "jest": { - "testRegex": "(/test/.*|\\.(test|spec))\\.js$", + "testRegex": "(/test/.*|\\.(test|spec))\\.(js|tsx)$", "setupFilesAfterEnv": [ "/test/setupTests.js" ], diff --git a/src/scripts/ButtonGroup.js b/src/scripts/ButtonGroup.tsx similarity index 72% rename from src/scripts/ButtonGroup.js rename to src/scripts/ButtonGroup.tsx index b28b5a8eb..243c7a2aa 100644 --- a/src/scripts/ButtonGroup.js +++ b/src/scripts/ButtonGroup.tsx @@ -1,15 +1,18 @@ import React, { Component, Children } from 'react'; -import PropTypes from 'prop-types'; import classnames from 'classnames'; import DropdownButton from './DropdownButton'; -export default class ButtonGroup extends Component { - constructor() { - super(); +export type ButtonGroupProps = { + className?: string; +}; + +export class ButtonGroup extends Component { + constructor(props: Readonly) { + super(props); this.renderButton = this.renderButton.bind(this); } - renderButton(button, index) { + renderButton(button: any, index: number) { const cnt = React.Children.count(this.props.children); if ( button.type && @@ -29,9 +32,6 @@ export default class ButtonGroup extends Component { render() { const { className, children, ...props } = this.props; const btnGrpClassNames = classnames(className, 'slds-button-group'); - const pprops = Object.assign({}, props); - delete pprops.component; - delete pprops.items; return (
{Children.map(children, this.renderButton)} @@ -39,8 +39,3 @@ export default class ButtonGroup extends Component { ); } } - -ButtonGroup.propTypes = { - className: PropTypes.string, - children: PropTypes.node, -}; diff --git a/src/scripts/ComponentSettings.js b/src/scripts/ComponentSettings.tsx similarity index 54% rename from src/scripts/ComponentSettings.js rename to src/scripts/ComponentSettings.tsx index 7d7997eff..c1bb3e695 100644 --- a/src/scripts/ComponentSettings.js +++ b/src/scripts/ComponentSettings.tsx @@ -1,24 +1,32 @@ import React from 'react'; import PropTypes from 'prop-types'; +export type ComponentSettingsProps = { + assetRoot?: string; + portalClassName?: string; + portalStyle?: object; +}; + +export type ComponentSettingsContext = { + assetRoot?: string; + portalClassName?: string; + portalStyle?: object; +}; + /** * */ -export default class ComponentSettings extends React.Component { - static propTypes = { - assetRoot: PropTypes.string, - portalClassName: PropTypes.string, - portalStyle: PropTypes.object, // eslint-disable-line react/forbid-prop-types - children: PropTypes.node, - }; - +export class ComponentSettings extends React.Component< + ComponentSettingsProps, + {} +> { static childContextTypes = { assetRoot: PropTypes.string, portalClassName: PropTypes.string, portalStyle: PropTypes.object, // eslint-disable-line react/forbid-prop-types }; - getChildContext() { + getChildContext(): ComponentSettingsContext { const { assetRoot, portalClassName, portalStyle } = this.props; return { assetRoot, portalClassName, portalStyle }; } diff --git a/src/scripts/MediaObject.js b/src/scripts/MediaObject.tsx similarity index 66% rename from src/scripts/MediaObject.js rename to src/scripts/MediaObject.tsx index 56396afca..f5fc0b89d 100644 --- a/src/scripts/MediaObject.js +++ b/src/scripts/MediaObject.tsx @@ -1,9 +1,14 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; +import React, { Component, ReactNode } from 'react'; import classNames from 'classnames'; -export default class MediaObject extends Component { - renderFigure(figure, className) { +export type MediaObjectProps = { + figureLeft?: ReactNode; + figureRight?: ReactNode; + figureCenter?: ReactNode; +}; + +export class MediaObject extends Component { + renderFigure(figure: ReactNode, className?: string) { if (!figure) return null; return (
@@ -25,10 +30,3 @@ export default class MediaObject extends Component { ); } } - -MediaObject.propTypes = { - figureLeft: PropTypes.node, - figureRight: PropTypes.node, - figureCenter: PropTypes.node, - children: PropTypes.node, -}; diff --git a/src/scripts/PageHeader.js b/src/scripts/PageHeader.js index fc7ba9325..763840b5b 100644 --- a/src/scripts/PageHeader.js +++ b/src/scripts/PageHeader.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -import MediaObject from './MediaObject'; +import { MediaObject } from './MediaObject'; import Text from './Text'; import Grid, { Row, Col } from './Grid'; import { BreadCrumbs, Crumb } from './BreadCrumbs'; diff --git a/src/scripts/index.js b/src/scripts/index.js index c024e312c..d2babab97 100644 --- a/src/scripts/index.js +++ b/src/scripts/index.js @@ -2,7 +2,6 @@ // changed // because of https://github.com/gaearon/react-hot-loader/issues/158 import Icon from './Icon'; -import ButtonGroup from './ButtonGroup'; import DropdownButton from './DropdownButton'; import DropdownMenu, { DropdownMenuItem, @@ -33,7 +32,6 @@ import Spinner from './Spinner'; import Container from './Container'; import Grid, { Row, Col } from './Grid'; import Notification, { Alert, Toast } from './Notification'; -import MediaObject from './MediaObject'; import Text from './Text'; import PageHeader, { PageHeaderHeading, @@ -54,14 +52,12 @@ import Table, { import Popover, { PopoverHeader, PopoverBody } from './Popover'; import Toggle from './Toggle'; import Pill from './Pill'; -import ComponentSettings from './ComponentSettings'; export { Notification, Alert, Toast, Icon, - ButtonGroup, DropdownButton, DropdownMenu, DropdownMenuItem, @@ -99,7 +95,6 @@ export { Row, Col, Text, - MediaObject, PageHeader, PageHeaderHeading, PageHeaderHeadingTitle, @@ -119,7 +114,6 @@ export { TableRowColumnActions, Toggle, Pill, - ComponentSettings, }; export { default as util } from './util'; @@ -127,3 +121,7 @@ export { default as util } from './util'; export * from './Badge'; export * from './BreadCrumbs'; export * from './Button'; +export * from './ButtonGroup'; +export * from './MediaObject'; + +export * from './ComponentSettings'; diff --git a/stories/ButtonGroupStories.js b/stories/ButtonGroupStories.tsx similarity index 100% rename from stories/ButtonGroupStories.js rename to stories/ButtonGroupStories.tsx diff --git a/stories/MediaObjectStories.js b/stories/MediaObjectStories.tsx similarity index 100% rename from stories/MediaObjectStories.js rename to stories/MediaObjectStories.tsx