mirror of
https://github.com/flarum/framework.git
synced 2024-12-12 06:03:39 +08:00
36 lines
989 B
JavaScript
36 lines
989 B
JavaScript
|
import Component from 'flarum/component';
|
||
|
import LoadingIndicator from 'flarum/components/loading-indicator';
|
||
|
import classList from 'flarum/utils/class-list';
|
||
|
import icon from 'flarum/helpers/icon';
|
||
|
|
||
|
export default class YesNoInput extends Component {
|
||
|
constructor(props) {
|
||
|
super(props);
|
||
|
|
||
|
this.loading = m.prop(false);
|
||
|
}
|
||
|
|
||
|
view() {
|
||
|
return m('label.yesno-control', [
|
||
|
m('input[type=checkbox]', {
|
||
|
checked: this.props.state,
|
||
|
disabled: this.props.disabled,
|
||
|
onchange: m.withAttr('checked', this.onchange.bind(this))
|
||
|
}),
|
||
|
m('div.yesno', {className: classList({
|
||
|
loading: this.loading(),
|
||
|
disabled: this.props.disabled,
|
||
|
state: this.props.state ? 'yes' : 'no'
|
||
|
})}, [
|
||
|
this.loading()
|
||
|
? LoadingIndicator.component({size: 'tiny'})
|
||
|
: icon(this.props.state ? 'check' : 'times')
|
||
|
])
|
||
|
]);
|
||
|
}
|
||
|
|
||
|
onchange(checked) {
|
||
|
this.props.onchange && this.props.onchange(checked, this);
|
||
|
}
|
||
|
}
|