import Utils from '../utils/utils';
import Mixins from '../utils/mixins';
/* phenome-dts-imports
import { Toggle as ToggleNamespace } from 'framework7/components/toggle/toggle';
*/
/* phenome-dts-instance
f7Toggle: ToggleNamespace.Toggle
*/
export default {
name: 'f7-toggle',
props: {
id: [String, Number],
className: String, // phenome-react-line
style: Object, // phenome-react-line
init: {
type: Boolean,
default: true,
},
checked: Boolean,
defaultChecked: Boolean,
disabled: Boolean,
readonly: Boolean,
name: String,
value: [String, Number, Array],
...Mixins.colorProps,
},
render() {
const self = this;
const props = self.props;
const {
className,
disabled,
id,
style,
name,
readonly,
checked,
defaultChecked,
value,
} = props;
const labelClasses = Utils.classNames(
'toggle',
className,
{
disabled,
},
Mixins.colorClasses(props),
);
let inputEl;
if (process.env.COMPILER === 'react') {
inputEl = (
);
}
if (process.env.COMPILER === 'vue') {
inputEl = (
);
}
return (
);
},
watch: {
'props.checked': function watchChecked(newValue) {
const self = this;
if (!self.f7Toggle) return;
self.f7Toggle.checked = newValue;
},
},
componentDidCreate() {
this.onChange = this.onChange.bind(this);
},
componentDidMount() {
const self = this;
if (!self.props.init) return;
self.$f7ready((f7) => {
self.f7Toggle = f7.toggle.create({
el: self.refs.el,
on: {
change(toggle) {
const checked = toggle.checked;
self.dispatchEvent('toggle:change toggleChange', checked);
},
},
});
});
},
componentWillUnmount() {
const self = this;
if (self.f7Toggle && self.f7Toggle.destroy && self.f7Toggle.$el) self.f7Toggle.destroy();
},
methods: {
toggle() {
const self = this;
if (self.f7Toggle && self.f7Toggle.toggle) self.f7Toggle.toggle();
},
onChange(event) {
const self = this;
self.dispatchEvent('change', event);
},
},
};