taro-material
Version:
Mini Program components that implement Google's Material Design.
65 lines (58 loc) • 1.75 kB
JavaScript
import Nerv from "nervjs";
import Taro from "@tarojs/taro-h5";
import { View, Switch } from '@tarojs/components';
import PropTypes from 'prop-types';
import _isUndefined from 'lodash/isUndefined';
import classNames from 'classnames';
import AtComponent from "../../common/component";
export default class AtSwitch extends AtComponent {
handleChange = (event, ...arg) => {
const { value, checked } = event.detail;
const state = _isUndefined(value) ? checked : value;
this.props.onChange(state, event, ...arg);
};
render() {
const {
customStyle,
className,
disabled,
border,
title,
checked,
color
} = this.props;
const rootCls = classNames('at-switch', {
'at-switch--without-border': !border
}, className);
const containerCls = classNames('at-switch__container', {
'at-switch--disabled': disabled
});
return <View className={rootCls} style={customStyle}>
<View className="at-switch__title">{title}</View>
<View className={containerCls}>
<View className="at-switch__mask"></View>
<Switch className="at-switch__switch" checked={checked} color={color} onChange={this.handleChange} />
</View>
</View>;
}
}
AtSwitch.defaultProps = {
customStyle: '',
className: '',
title: '',
color: '#6190e8',
border: true,
disabled: false,
checked: false,
onChange: () => {}
};
AtSwitch.propTypes = {
customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
title: PropTypes.string,
color: PropTypes.string,
checked: PropTypes.bool,
border: PropTypes.bool,
disabled: PropTypes.bool,
onChange: PropTypes.func
};