{"version":3,"file":"Switch.cjs","sources":["../../../../../../src/components/Forms/Legacy/Switch/Switch.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { Placement } from '@popperjs/core';\nimport { uniqueId } from 'lodash';\nimport { PureComponent } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { withTheme2 } from '../../../../themes/ThemeContext';\nimport { Themeable2 } from '../../../../types/theme';\nimport { Icon } from '../../../Icon/Icon';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\n\nexport interface Props extends Themeable2 {\n  label: string;\n  checked: boolean;\n  disabled?: boolean;\n  className?: string;\n  labelClass?: string;\n  switchClass?: string;\n  tooltip?: string;\n  tooltipPlacement?: Placement;\n  transparent?: boolean;\n  onChange: (event: React.SyntheticEvent<HTMLInputElement>) => void;\n}\n\nexport interface State {\n  id: string;\n}\n\n/** @deprecated Please use the `Switch` component, {@link https://developers.grafana.com/ui/latest/index.html?path=/story/forms-switch--controlled as seen in Storybook} */\nclass UnthemedSwitch extends PureComponent<Props, State> {\n  state = {\n    id: uniqueId(),\n  };\n\n  internalOnChange = (event: React.FormEvent<HTMLInputElement>) => {\n    event.stopPropagation();\n    this.props.onChange(event);\n  };\n\n  render() {\n    const {\n      labelClass = '',\n      switchClass = '',\n      label,\n      checked,\n      disabled,\n      transparent,\n      className,\n      theme,\n      tooltip,\n      tooltipPlacement,\n    } = this.props;\n    const styles = getStyles(theme);\n\n    const labelId = this.state.id;\n    const labelClassName = `gf-form-label ${labelClass} ${transparent ? 'gf-form-label--transparent' : ''} pointer`;\n    const switchClassName = cx(styles.switch, switchClass, {\n      [styles.switchTransparent]: transparent,\n    });\n\n    return (\n      <div className={styles.container}>\n        <label htmlFor={labelId} className={cx('gf-form', styles.labelContainer, className)}>\n          {label && (\n            <div className={labelClassName}>\n              {label}\n              {tooltip && (\n                <Tooltip placement={tooltipPlacement ? tooltipPlacement : 'auto'} content={tooltip} theme={'info'}>\n                  <Icon name=\"info-circle\" size=\"sm\" style={{ marginLeft: '10px' }} />\n                </Tooltip>\n              )}\n            </div>\n          )}\n          <div className={switchClassName}>\n            <input\n              disabled={disabled}\n              id={labelId}\n              type=\"checkbox\"\n              checked={checked}\n              onChange={this.internalOnChange}\n            />\n            <span className={styles.slider} />\n          </div>\n        </label>\n      </div>\n    );\n  }\n}\n\nexport const Switch = withTheme2(UnthemedSwitch);\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  const slider = css({\n    background: theme.v1.palette.gray1,\n    borderRadius: theme.shape.radius.pill,\n    height: '16px',\n    width: '32px',\n    display: 'block',\n    position: 'relative',\n\n    '&::before': {\n      position: 'absolute',\n      content: \"''\",\n      height: '12px',\n      width: '12px',\n      left: '2px',\n      top: '2px',\n      background: theme.components.input.background,\n      [theme.transitions.handleMotion('no-preference')]: {\n        transition: '0.4s',\n      },\n      borderRadius: theme.shape.radius.circle,\n      boxShadow: theme.shadows.z1,\n    },\n  });\n  return {\n    container: css({\n      display: 'flex',\n      flexShrink: 0,\n    }),\n    labelContainer: css({\n      display: 'flex',\n      cursor: 'pointer',\n      marginRight: theme.spacing(0.5),\n    }),\n    switch: css({\n      display: 'flex',\n      position: 'relative',\n      width: '56px',\n      height: theme.spacing(4),\n      background: theme.components.input.background,\n      border: `1px solid ${theme.components.input.borderColor}`,\n      borderRadius: theme.shape.radius.default,\n      alignItems: 'center',\n      justifyContent: 'center',\n      input: {\n        opacity: 0,\n        width: 0,\n        height: 0,\n      },\n      [`input:checked + .${slider}`]: {\n        background: theme.colors.primary.main,\n      },\n\n      [`input:checked + .${slider}::before`]: {\n        transform: 'translateX(16px)',\n      },\n    }),\n    switchTransparent: css({\n      background: 'transparent',\n      border: 0,\n      width: '40px',\n    }),\n    slider,\n  };\n};\n"],"names":["PureComponent","uniqueId","cx","jsx","jsxs","Tooltip","Icon","withTheme2","css"],"mappings":"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"}