Merge "Update ODLUX"
[ccsdk/features.git] / sdnr / wt / odlux / framework / src / components / material-ui / toggleButton.tsx
index 1a29d69..54f14a7 100644 (file)
-/**\r
- * ============LICENSE_START========================================================================\r
- * ONAP : ccsdk feature sdnr wt odlux\r
- * =================================================================================================\r
- * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.\r
- * =================================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except\r
- * in compliance with the License. You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software distributed under the License\r
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r
- * or implied. See the License for the specific language governing permissions and limitations under\r
- * the License.\r
- * ============LICENSE_END==========================================================================\r
- */\r
-\r
-import * as React from 'react';\r
-import classNames from 'classnames';\r
-import { withStyles, WithStyles, Theme, createStyles } from '@material-ui/core/styles';\r
-import { fade } from '@material-ui/core/styles/colorManipulator';\r
-import ButtonBase from '@material-ui/core/ButtonBase';\r
-\r
-\r
-export const styles = (theme: Theme) => createStyles({\r
-    /* Styles applied to the root element. */\r
-    root: {\r
-        ...theme.typography.button,\r
-        height: 32,\r
-        minWidth: 48,\r
-        margin: 0,\r
-        padding: `${theme.spacing(1 - 4)}px ${theme.spacing(1.5)}px`,\r
-        borderRadius: 2,\r
-        willChange: 'opacity',\r
-        color: fade(theme.palette.action.active, 0.38),\r
-        '&:hover': {\r
-            textDecoration: 'none',\r
-            // Reset on mouse devices\r
-            backgroundColor: fade(theme.palette.text.primary, 0.12),\r
-            '@media (hover: none)': {\r
-                backgroundColor: 'transparent',\r
-            },\r
-            '&$disabled': {\r
-                backgroundColor: 'transparent',\r
-            },\r
-        },\r
-        '&:not(:first-child)': {\r
-            borderTopLeftRadius: 0,\r
-            borderBottomLeftRadius: 0,\r
-        },\r
-        '&:not(:last-child)': {\r
-            borderTopRightRadius: 0,\r
-            borderBottomRightRadius: 0,\r
-        },\r
-    },\r
-    /* Styles applied to the root element if `disabled={true}`. */\r
-    disabled: {\r
-        color: fade(theme.palette.action.disabled, 0.12),\r
-    },\r
-    /* Styles applied to the root element if `selected={true}`. */\r
-    selected: {\r
-        color: theme.palette.action.active,\r
-        '&:after': {\r
-            content: '""',\r
-            display: 'block',\r
-            position: 'absolute',\r
-            overflow: 'hidden',\r
-            borderRadius: 'inherit',\r
-            width: '100%',\r
-            height: '100%',\r
-            left: 0,\r
-            top: 0,\r
-            pointerEvents: 'none',\r
-            zIndex: 0,\r
-            backgroundColor: 'currentColor',\r
-            opacity: 0.38,\r
-        },\r
-        '& + &:before': {\r
-            content: '""',\r
-            display: 'block',\r
-            position: 'absolute',\r
-            overflow: 'hidden',\r
-            width: 1,\r
-            height: '100%',\r
-            left: 0,\r
-            top: 0,\r
-            pointerEvents: 'none',\r
-            zIndex: 0,\r
-            backgroundColor: 'currentColor',\r
-            opacity: 0.12,\r
-        },\r
-    },\r
-    /* Styles applied to the `label` wrapper element. */\r
-    label: {\r
-        width: '100%',\r
-        display: 'inherit',\r
-        alignItems: 'inherit',\r
-        justifyContent: 'inherit',\r
-    },\r
-});\r
-\r
-export type ToggleButtonClassKey = 'disabled' | 'root' | 'label' | 'selected';\r
-\r
-interface IToggleButtonProps extends WithStyles<typeof styles> {\r
-    className?: string;\r
-    component?: React.ReactType<IToggleButtonProps>;\r
-    disabled?: boolean;\r
-    disableFocusRipple?: boolean;\r
-    disableRipple?: boolean;\r
-    selected?: boolean;\r
-    type?: string;\r
-    value?: any;\r
-    onClick?: (event: React.FormEvent<HTMLElement>, value?: any) => void;\r
-    onChange?: (event: React.FormEvent<HTMLElement>, value?: any) => void;\r
-}\r
-\r
-class ToggleButtonComponent extends React.Component<IToggleButtonProps> {\r
-    handleChange = (event: React.FormEvent<HTMLElement>) => {\r
-        const { onChange, onClick, value } = this.props;\r
-\r
-        event.stopPropagation();\r
-        if (onClick) {\r
-            onClick(event, value);\r
-            if (event.isDefaultPrevented()) {\r
-                return;\r
-            }\r
-        }\r
-\r
-        if (onChange) {\r
-            onChange(event, value);\r
-        }\r
-        event.preventDefault();\r
-    };\r
-\r
-    render() {\r
-        const {\r
-            children,\r
-            className: classNameProp,\r
-            classes,\r
-            disableFocusRipple,\r
-            disabled,\r
-            selected,\r
-            ...other\r
-        } = this.props;\r
-\r
-        const className = classNames(\r
-            classes.root,\r
-            {\r
-                [classes.disabled]: disabled,\r
-                [classes.selected]: selected,\r
-            },\r
-            classNameProp,\r
-        );\r
-\r
-        return (\r
-            <ButtonBase\r
-                className={className}\r
-                disabled={disabled}\r
-                focusRipple={!disableFocusRipple}\r
-                onClick={this.handleChange}\r
-                href="#"\r
-                {...other}\r
-            >\r
-                <span className={classes.label}>{children}</span>\r
-            </ButtonBase>\r
-        );\r
-    }\r
-    public static defaultProps = {\r
-        disabled: false,\r
-        disableFocusRipple: false,\r
-        disableRipple: false,\r
-    };\r
-\r
-    public static muiName = 'ToggleButton';\r
-}\r
-\r
-export const ToggleButton = withStyles(styles, { name: 'MuiToggleButton' })(ToggleButtonComponent);\r
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ */
+
+import * as React from 'react';
+import classNames from 'classnames';
+import { Theme, alpha } from '@mui/material/styles';
+import { WithStyles } from '@mui/styles';
+import withStyles from '@mui/styles/withStyles';
+import createStyles from '@mui/styles/createStyles';
+import ButtonBase from '@mui/material/ButtonBase';
+
+
+export const styles = (theme: Theme) => createStyles({
+    /* Styles applied to the root element. */
+    root: {
+        ...theme.typography.button,
+        height: 32,
+        minWidth: 48,
+        margin: 0,
+        padding: `${theme.spacing(1 - 4)} ${theme.spacing(1.5)}`,
+        borderRadius: 2,
+        willChange: 'opacity',
+        color: alpha(theme.palette.action.active, 0.38),
+        '&:hover': {
+            textDecoration: 'none',
+            // Reset on mouse devices
+            backgroundColor: alpha(theme.palette.text.primary, 0.12),
+            '@media (hover: none)': {
+                backgroundColor: 'transparent',
+            },
+            '&.Mui-disabled': {
+                backgroundColor: 'transparent',
+            },
+        },
+        '&:not(:first-child)': {
+            borderTopLeftRadius: 0,
+            borderBottomLeftRadius: 0,
+        },
+        '&:not(:last-child)': {
+            borderTopRightRadius: 0,
+            borderBottomRightRadius: 0,
+        },
+    },
+    /* Styles applied to the root element if `disabled={true}`. */
+    disabled: {
+        color: alpha(theme.palette.action.disabled, 0.12),
+    },
+    /* Styles applied to the root element if `selected={true}`. */
+    selected: {
+        color: theme.palette.action.active,
+        '&:after': {
+            content: '""',
+            display: 'block',
+            position: 'absolute',
+            overflow: 'hidden',
+            borderRadius: 'inherit',
+            width: '100%',
+            height: '100%',
+            left: 0,
+            top: 0,
+            pointerEvents: 'none',
+            zIndex: 0,
+            backgroundColor: 'currentColor',
+            opacity: 0.38,
+        },
+        '& + &:before': {
+            content: '""',
+            display: 'block',
+            position: 'absolute',
+            overflow: 'hidden',
+            width: 1,
+            height: '100%',
+            left: 0,
+            top: 0,
+            pointerEvents: 'none',
+            zIndex: 0,
+            backgroundColor: 'currentColor',
+            opacity: 0.12,
+        },
+    },
+    /* Styles applied to the `label` wrapper element. */
+    label: {
+        width: '100%',
+        display: 'inherit',
+        alignItems: 'inherit',
+        justifyContent: 'inherit',
+    },
+});
+
+export type ToggleButtonClassKey = 'disabled' | 'root' | 'label' | 'selected';
+
+interface IToggleButtonProps extends WithStyles<typeof styles> {
+    className?: string;
+    component?: React.ReactType<IToggleButtonProps>;
+    disabled?: boolean;
+    disableFocusRipple?: boolean;
+    disableRipple?: boolean;
+    selected?: boolean;
+    type?: string;
+    value?: any;
+    onClick?: (event: React.FormEvent<HTMLElement>, value?: any) => void;
+    onChange?: (event: React.FormEvent<HTMLElement>, value?: any) => void;
+}
+
+class ToggleButtonComponent extends React.Component<IToggleButtonProps> {
+    handleChange = (event: React.FormEvent<HTMLElement>) => {
+        const { onChange, onClick, value } = this.props;
+
+        event.stopPropagation();
+        if (onClick) {
+            onClick(event, value);
+            if (event.isDefaultPrevented()) {
+                return;
+            }
+        }
+
+        if (onChange) {
+            onChange(event, value);
+        }
+        event.preventDefault();
+    };
+
+    render() {
+        const {
+            children,
+            className: classNameProp,
+            classes,
+            disableFocusRipple,
+            disabled,
+            selected,
+            ...other
+        } = this.props;
+
+        const className = classNames(
+            classes.root,
+            {
+                [classes.disabled]: disabled,
+                [classes.selected]: selected,
+            },
+            classNameProp,
+        );
+
+        return (
+            <ButtonBase
+                className={className}
+                disabled={disabled}
+                focusRipple={!disableFocusRipple}
+                onClick={this.handleChange}
+                href="#"
+                {...other}
+            >
+                <span className={classes.label}>{children}</span>
+            </ButtonBase>
+        );
+    }
+    public static defaultProps = {
+        disabled: false,
+        disableFocusRipple: false,
+        disableRipple: false,
+    };
+
+    public static muiName = 'ToggleButton';
+}
+
+export const ToggleButton = withStyles(styles, { name: 'MuiToggleButton' })(ToggleButtonComponent);
 export default ToggleButton;
\ No newline at end of file