diff --git a/src/scripts/Toggle.js b/src/scripts/Toggle.tsx similarity index 60% rename from src/scripts/Toggle.js rename to src/scripts/Toggle.tsx index 962dc0292..b749a4fa8 100644 --- a/src/scripts/Toggle.js +++ b/src/scripts/Toggle.tsx @@ -1,11 +1,24 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; +import React, { Component, InputHTMLAttributes } from 'react'; import classnames from 'classnames'; +import { FormElement, FormElementProps } from './FormElement'; -import { FormElement } from './FormElement'; +export type ToggleProps = { + className?: string; + label?: string; + required?: boolean; + error?: FormElementProps['error']; + totalCols?: number; + cols?: number; + name?: string; + value?: string | number; + checked?: boolean; + defaultChecked?: boolean; +} & InputHTMLAttributes; -export default class Toggle extends Component { - renderToggle({ className, label, ...props }) { +export class Toggle extends Component { + node: HTMLDivElement | null = null; + + renderToggle({ className, label, ...props }: ToggleProps) { const toggleClassNames = classnames( className, 'slds-checkbox--toggle slds-grid' @@ -43,23 +56,3 @@ export default class Toggle extends Component { ); } } - -Toggle.propTypes = { - className: PropTypes.string, - label: PropTypes.string, - required: PropTypes.bool, - // FormElement.propTypes.error - error: PropTypes.oneOfType([ - PropTypes.bool, - PropTypes.string, - PropTypes.shape({ - message: PropTypes.string, - }), - ]), - totalCols: PropTypes.number, - cols: PropTypes.number, - name: PropTypes.string, - value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - checked: PropTypes.bool, - defaultChecked: PropTypes.bool, -}; diff --git a/src/scripts/index.js b/src/scripts/index.js index af1122fd3..0857dcafb 100644 --- a/src/scripts/index.js +++ b/src/scripts/index.js @@ -28,7 +28,6 @@ import Table, { TableRowColumnActions, } from './Table'; import Popover, { PopoverHeader, PopoverBody } from './Popover'; -import Toggle from './Toggle'; export { Notification, @@ -67,7 +66,6 @@ export { TableHeaderColumn, TableRowColumn, TableRowColumnActions, - Toggle, }; export { default as util } from './util'; @@ -93,6 +91,7 @@ export * from './Pill'; export * from './Spinner'; export * from './Text'; export * from './Textarea'; +export * from './Toggle'; export * from './Tree'; export * from './TreeNode'; export * from './ComponentSettings'; diff --git a/stories/ToggleStories.js b/stories/ToggleStories.tsx similarity index 82% rename from stories/ToggleStories.js rename to stories/ToggleStories.tsx index 8d800d7a2..8788fe8a2 100644 --- a/stories/ToggleStories.js +++ b/stories/ToggleStories.tsx @@ -10,10 +10,10 @@ storiesOf('Toggle', module) () => ( ), diff --git a/test/storyshots/__snapshots__/storyshots.test.js.snap b/test/storyshots/__snapshots__/storyshots.test.js.snap index f366f70e7..c79cc6073 100644 --- a/test/storyshots/__snapshots__/storyshots.test.js.snap +++ b/test/storyshots/__snapshots__/storyshots.test.js.snap @@ -45147,6 +45147,8 @@ exports[`Storyshots Toggle Controlled with knobs 1`] = `