From 23bea2d899197c253310487d9d8896a0c3524ae6 Mon Sep 17 00:00:00 2001 From: joshwooding <12938082+joshwooding@users.noreply.github.com> Date: Sun, 10 Mar 2019 13:54:26 +0000 Subject: [PATCH] Tidy Up and move SelectableGroup --- .../lab/selectable-group/Checkboxes.hooks.js | 57 -------------- .../pages/lab/selectable-group/Checkboxes.js | 76 ------------------- .../selectable-group/RadioButtons.hooks.js | 61 --------------- .../lab/selectable-group/RadioButtons.js | 75 ------------------ .../lab/selectable-group/selectable-group.md | 17 ----- .../src/ToggleButton/ToggleButton.js | 2 +- .../ToggleButtonGroup/ToggleButtonGroup.js | 2 +- packages/material-ui/src/Radio/Radio.js | 2 +- .../material-ui/src/RadioGroup/RadioGroup.js | 2 +- .../SelectableGroup/SelectableGroup.d.ts | 0 .../SelectableGroup/SelectableGroup.js | 5 +- .../SelectableGroup/SelectableGroupContext.js | 0 .../src/internal}/SelectableGroup/index.d.ts | 0 .../src/internal}/SelectableGroup/index.js | 0 .../SelectableGroup/useSelectedState.js | 3 + .../src/internal}/SelectableGroup/utils.js | 0 .../SelectableGroup/withSelectableContext.js | 3 + pages/_app.js | 3 - pages/lab/api/selectable-group.js | 11 --- pages/lab/api/selectable-group.md | 32 -------- pages/lab/selectable-group.js | 18 ----- 21 files changed, 14 insertions(+), 355 deletions(-) delete mode 100644 docs/src/pages/lab/selectable-group/Checkboxes.hooks.js delete mode 100644 docs/src/pages/lab/selectable-group/Checkboxes.js delete mode 100644 docs/src/pages/lab/selectable-group/RadioButtons.hooks.js delete mode 100644 docs/src/pages/lab/selectable-group/RadioButtons.js delete mode 100644 docs/src/pages/lab/selectable-group/selectable-group.md rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/SelectableGroup.d.ts (100%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/SelectableGroup.js (94%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/SelectableGroupContext.js (100%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/index.d.ts (100%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/index.js (100%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/useSelectedState.js (83%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/utils.js (100%) rename packages/{material-ui-lab/src => material-ui/src/internal}/SelectableGroup/withSelectableContext.js (94%) delete mode 100644 pages/lab/api/selectable-group.js delete mode 100644 pages/lab/api/selectable-group.md delete mode 100644 pages/lab/selectable-group.js diff --git a/docs/src/pages/lab/selectable-group/Checkboxes.hooks.js b/docs/src/pages/lab/selectable-group/Checkboxes.hooks.js deleted file mode 100644 index a15d0ec9666cba..00000000000000 --- a/docs/src/pages/lab/selectable-group/Checkboxes.hooks.js +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import Checkbox from '@material-ui/core/Checkbox'; -import SelectableGroup from '@material-ui/lab/SelectableGroup'; -import useSelectedState from '@material-ui/lab/SelectableGroup/useSelectedState'; -import Typography from '@material-ui/core/Typography'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; -import FormGroup from '@material-ui/core/FormGroup'; -import { makeStyles } from '@material-ui/styles'; - -const useStyles = makeStyles({ - root: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, -}); - -function SelectableCheckbox(props) { - const { value, ...other } = props; - const { toggle, isValueSelected } = useSelectedState(); - - const handleChange = event => toggle(event.target.value, event); - - return ( - - ); -} - -SelectableCheckbox.propTypes = { - value: PropTypes.any, -}; - -function Checkboxes() { - const classes = useStyles(); - const [selected, setSelected] = React.useState([]); - - const handleChange = (event, newSelected) => setSelected(newSelected); - - return ( -
- - - } label="Gilad Gray" /> - } label="Jason Killian" /> - } - label="Antoine Llorca" - /> - - - {`Selected Value: ${JSON.stringify(selected)}`} -
- ); -} - -export default Checkboxes; diff --git a/docs/src/pages/lab/selectable-group/Checkboxes.js b/docs/src/pages/lab/selectable-group/Checkboxes.js deleted file mode 100644 index 28d67be7763df9..00000000000000 --- a/docs/src/pages/lab/selectable-group/Checkboxes.js +++ /dev/null @@ -1,76 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import Checkbox from '@material-ui/core/Checkbox'; -import SelectableGroup from '@material-ui/lab/SelectableGroup'; -import withSelectableContext from '@material-ui/lab/SelectableGroup/withSelectableContext'; -import Typography from '@material-ui/core/Typography'; -import FormControlLabel from '@material-ui/core/FormControlLabel'; -import FormGroup from '@material-ui/core/FormGroup'; -import { withStyles } from '@material-ui/core/styles'; - -const styles = { - root: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, -}; - -const SelectableCheckbox = withSelectableContext(props => { - const { selectState, value, ...other } = props; - const handleChange = event => selectState.toggle(event.target.value, event); - - return ( - - ); -}); - -SelectableCheckbox.propTypes = { - value: PropTypes.any, -}; - -class Checkboxes extends React.Component { - state = { - selected: [], - }; - - handleChange = (event, selected) => { - this.setState({ - selected, - }); - }; - - render() { - const { classes } = this.props; - const { selected } = this.state; - return ( -
- - - } label="Gilad Gray" /> - } - label="Jason Killian" - /> - } - label="Antoine Llorca" - /> - - - {`Selected Value: ${JSON.stringify(selected)}`} -
- ); - } -} - -Checkboxes.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(Checkboxes); diff --git a/docs/src/pages/lab/selectable-group/RadioButtons.hooks.js b/docs/src/pages/lab/selectable-group/RadioButtons.hooks.js deleted file mode 100644 index a374fc7a59cbcc..00000000000000 --- a/docs/src/pages/lab/selectable-group/RadioButtons.hooks.js +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react'; -import { makeStyles } from '@material-ui/styles'; -import green from '@material-ui/core/colors/green'; -import Radio from '@material-ui/core/Radio'; -import SelectableGroup from '@material-ui/lab/SelectableGroup'; -import RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked'; -import RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked'; -import Typography from '@material-ui/core/Typography'; - -const useStyles = makeStyles({ - root: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, - radioRoot: { - color: green[600], - '&$checked': { - color: green[500], - }, - }, - checked: {}, -}); - -function RadioButtons() { - const classes = useStyles(); - const [selected, setSelected] = React.useState(); - - const handleChange = (event, newSelected) => setSelected(newSelected); - - return ( -
- -
- - - - } - checkedIcon={} - /> -
-
- {`Selected Value: ${selected}`} -
- ); -} - -export default RadioButtons; diff --git a/docs/src/pages/lab/selectable-group/RadioButtons.js b/docs/src/pages/lab/selectable-group/RadioButtons.js deleted file mode 100644 index dd212af110cae1..00000000000000 --- a/docs/src/pages/lab/selectable-group/RadioButtons.js +++ /dev/null @@ -1,75 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { withStyles } from '@material-ui/core/styles'; -import green from '@material-ui/core/colors/green'; -import Radio from '@material-ui/core/Radio'; -import SelectableGroup from '@material-ui/lab/SelectableGroup'; -import RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked'; -import RadioButtonCheckedIcon from '@material-ui/icons/RadioButtonChecked'; -import Typography from '@material-ui/core/Typography'; - -const styles = { - root: { - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - }, - radioRoot: { - color: green[600], - '&$checked': { - color: green[500], - }, - }, - checked: {}, -}; - -class RadioButtons extends React.Component { - state = { - selected: null, - }; - - handleChange = (event, selected) => { - this.setState({ - selected, - }); - }; - - render() { - const { classes } = this.props; - const { selected } = this.state; - return ( -
- -
- - - - } - checkedIcon={} - /> -
-
- {`Selected Value: ${selected}`} -
- ); - } -} - -RadioButtons.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(RadioButtons); diff --git a/docs/src/pages/lab/selectable-group/selectable-group.md b/docs/src/pages/lab/selectable-group/selectable-group.md deleted file mode 100644 index 0e64ffd1644e87..00000000000000 --- a/docs/src/pages/lab/selectable-group/selectable-group.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Selectable Group React component -components: SelectableGroup ---- - -# Selectable Group - -

A Selectable Group manages all the selection state

- -#### Select Many - -{{"demo": "pages/lab/selectable-group/Checkboxes.js"}} - -#### Select One - -{{"demo": "pages/lab/selectable-group/RadioButtons.js"}} - diff --git a/packages/material-ui-lab/src/ToggleButton/ToggleButton.js b/packages/material-ui-lab/src/ToggleButton/ToggleButton.js index 230474dca1bc3e..53d5c1a2b724b7 100644 --- a/packages/material-ui-lab/src/ToggleButton/ToggleButton.js +++ b/packages/material-ui-lab/src/ToggleButton/ToggleButton.js @@ -7,7 +7,7 @@ import withStyles from '@material-ui/core/styles/withStyles'; import { fade } from '@material-ui/core/styles/colorManipulator'; import ButtonBase from '@material-ui/core/ButtonBase'; import withForwardedRef from '@material-ui/core/utils/withForwardedRef'; -import useSelectedState from '../SelectableGroup/useSelectedState'; +import useSelectedState from '@material-ui/core/internal/SelectableGroup/useSelectedState'; export const styles = theme => ({ /* Styles applied to the root element. */ diff --git a/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js b/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js index b3c0dd54c35a1f..28e32c94769945 100644 --- a/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js +++ b/packages/material-ui-lab/src/ToggleButtonGroup/ToggleButtonGroup.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import clsx from 'clsx'; import withStyles from '@material-ui/core/styles/withStyles'; import withForwardedRef from '@material-ui/core/utils/withForwardedRef'; -import SelectableGroup from '../SelectableGroup'; +import SelectableGroup from '@material-ui/core/internal/SelectableGroup'; export const styles = theme => ({ /* Styles applied to the root element. */ diff --git a/packages/material-ui/src/Radio/Radio.js b/packages/material-ui/src/Radio/Radio.js index 20dd0f074fbb1c..1288ec79bed41c 100644 --- a/packages/material-ui/src/Radio/Radio.js +++ b/packages/material-ui/src/Radio/Radio.js @@ -6,7 +6,7 @@ import RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked import RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked'; import { capitalize } from '../utils/helpers'; import withStyles from '../styles/withStyles'; -import useSelectedState from '@material-ui/lab/SelectableGroup/useSelectedState'; +import useSelectedState from '../internal/SelectableGroup/useSelectedState'; export const styles = theme => ({ /* Styles applied to the root element. */ diff --git a/packages/material-ui/src/RadioGroup/RadioGroup.js b/packages/material-ui/src/RadioGroup/RadioGroup.js index 332676c5ada87c..b05004f14c1308 100644 --- a/packages/material-ui/src/RadioGroup/RadioGroup.js +++ b/packages/material-ui/src/RadioGroup/RadioGroup.js @@ -3,7 +3,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import FormGroup from '../FormGroup'; -import SelectableGroup from '@material-ui/lab/SelectableGroup'; +import SelectableGroup from '../internal/SelectableGroup'; function RadioGroup(props) { const { children, defaultValue, name, onChange, value: valueProp, ...other } = props; diff --git a/packages/material-ui-lab/src/SelectableGroup/SelectableGroup.d.ts b/packages/material-ui/src/internal/SelectableGroup/SelectableGroup.d.ts similarity index 100% rename from packages/material-ui-lab/src/SelectableGroup/SelectableGroup.d.ts rename to packages/material-ui/src/internal/SelectableGroup/SelectableGroup.d.ts diff --git a/packages/material-ui-lab/src/SelectableGroup/SelectableGroup.js b/packages/material-ui/src/internal/SelectableGroup/SelectableGroup.js similarity index 94% rename from packages/material-ui-lab/src/SelectableGroup/SelectableGroup.js rename to packages/material-ui/src/internal/SelectableGroup/SelectableGroup.js index 3957717d289479..741661d4242c5c 100644 --- a/packages/material-ui-lab/src/SelectableGroup/SelectableGroup.js +++ b/packages/material-ui/src/internal/SelectableGroup/SelectableGroup.js @@ -2,8 +2,11 @@ import React from 'react'; import PropTypes from 'prop-types'; import * as utils from './utils'; import SelectableGroupContext from './SelectableGroupContext'; -import objectIs from '../utils/objectIs'; +import objectIs from '../../../../material-ui-lab/src/utils/objectIs'; +/** + * @ignore - internal component. + */ function SelectableGroup(props) { const [selected, setSelected] = React.useState(null); const { additional, children, exclusive, value: valueProp } = props; diff --git a/packages/material-ui-lab/src/SelectableGroup/SelectableGroupContext.js b/packages/material-ui/src/internal/SelectableGroup/SelectableGroupContext.js similarity index 100% rename from packages/material-ui-lab/src/SelectableGroup/SelectableGroupContext.js rename to packages/material-ui/src/internal/SelectableGroup/SelectableGroupContext.js diff --git a/packages/material-ui-lab/src/SelectableGroup/index.d.ts b/packages/material-ui/src/internal/SelectableGroup/index.d.ts similarity index 100% rename from packages/material-ui-lab/src/SelectableGroup/index.d.ts rename to packages/material-ui/src/internal/SelectableGroup/index.d.ts diff --git a/packages/material-ui-lab/src/SelectableGroup/index.js b/packages/material-ui/src/internal/SelectableGroup/index.js similarity index 100% rename from packages/material-ui-lab/src/SelectableGroup/index.js rename to packages/material-ui/src/internal/SelectableGroup/index.js diff --git a/packages/material-ui-lab/src/SelectableGroup/useSelectedState.js b/packages/material-ui/src/internal/SelectableGroup/useSelectedState.js similarity index 83% rename from packages/material-ui-lab/src/SelectableGroup/useSelectedState.js rename to packages/material-ui/src/internal/SelectableGroup/useSelectedState.js index 1358b0acafd831..7df16eead5e753 100644 --- a/packages/material-ui-lab/src/SelectableGroup/useSelectedState.js +++ b/packages/material-ui/src/internal/SelectableGroup/useSelectedState.js @@ -1,6 +1,9 @@ import React from 'react'; import SelectableGroupContext from './SelectableGroupContext'; +/** + * @ignore - internal component. + */ function useSelectedState() { return React.useContext(SelectableGroupContext); } diff --git a/packages/material-ui-lab/src/SelectableGroup/utils.js b/packages/material-ui/src/internal/SelectableGroup/utils.js similarity index 100% rename from packages/material-ui-lab/src/SelectableGroup/utils.js rename to packages/material-ui/src/internal/SelectableGroup/utils.js diff --git a/packages/material-ui-lab/src/SelectableGroup/withSelectableContext.js b/packages/material-ui/src/internal/SelectableGroup/withSelectableContext.js similarity index 94% rename from packages/material-ui-lab/src/SelectableGroup/withSelectableContext.js rename to packages/material-ui/src/internal/SelectableGroup/withSelectableContext.js index cfe4ef8a0ceb6a..3baeff54d7ac86 100644 --- a/packages/material-ui-lab/src/SelectableGroup/withSelectableContext.js +++ b/packages/material-ui/src/internal/SelectableGroup/withSelectableContext.js @@ -3,6 +3,9 @@ import hoistNonReactStatics from 'hoist-non-react-statics'; import { getDisplayName } from '@material-ui/utils'; import useSelectedState from './useSelectedState'; +/** + * @ignore - internal component. + */ export default function withSelectableGroupContext(Component) { const WithSelectableGroupContext = props => { const selectState = useSelectedState(); diff --git a/pages/_app.js b/pages/_app.js index 55e9200675cbf4..8aca9dbac5fc0c 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -283,9 +283,6 @@ const pages = [ pathname: '/lab/about', title: 'About The Lab', }, - { - pathname: '/lab/selectable-group', - }, { pathname: '/lab/slider', }, diff --git a/pages/lab/api/selectable-group.js b/pages/lab/api/selectable-group.js deleted file mode 100644 index 24044fa748da71..00000000000000 --- a/pages/lab/api/selectable-group.js +++ /dev/null @@ -1,11 +0,0 @@ -import 'docs/src/modules/components/bootstrap'; -// --- Post bootstrap ----- -import React from 'react'; -import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; -import markdown from './selectable-group.md'; - -function Page() { - return ; -} - -export default Page; diff --git a/pages/lab/api/selectable-group.md b/pages/lab/api/selectable-group.md deleted file mode 100644 index e627f83d8f5c5f..00000000000000 --- a/pages/lab/api/selectable-group.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -filename: /packages/material-ui-lab/src/SelectableGroup/SelectableGroup.js ---- - - - -# SelectableGroup API - -

The API documentation of the SelectableGroup React component. Learn more about the properties and the CSS customization points.

- -```js -import SelectableGroup from '@material-ui/lab/SelectableGroup'; -``` - - - -## Props - -| Name | Type | Default | Description | -|:-----|:-----|:--------|:------------| -| additional | object |   | Additional props to pass down. | -| children | node |   | The contents of the selectable group. | -| exclusive | bool | false | Only allows one value to be selected. | -| onChange | func |   | Functioned called when value changes. | -| value | any |   | The currently selected value within the group or an array of selected values when `exclusive` is false. | - -Any other properties supplied will be spread to the root element (native element). - -## Demos - -- [Selectable Group](/lab/selectable-group/) - diff --git a/pages/lab/selectable-group.js b/pages/lab/selectable-group.js deleted file mode 100644 index 834f9e6b46ae78..00000000000000 --- a/pages/lab/selectable-group.js +++ /dev/null @@ -1,18 +0,0 @@ -import 'docs/src/modules/components/bootstrap'; -// --- Post bootstrap ----- -import React from 'react'; -import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs'; - -const req = require.context('docs/src/pages/lab/selectable-group', false, /\.md|\.js$/); -const reqSource = require.context( - '!raw-loader!../../docs/src/pages/lab/selectable-group', - false, - /\.js$/, -); -const reqPrefix = 'pages/lab/selectable-group'; - -function Page() { - return ; -} - -export default Page;