snappymail/dev/Component/SaveTrigger.js

78 lines
1.7 KiB
JavaScript
Raw Normal View History

2019-07-05 03:19:24 +08:00
import { pInt } from 'Common/Utils';
import { SaveSettingsStep } from 'Common/Enums';
import { AbstractComponent, componentExportHelper } from 'Component/Abstract';
2015-11-15 08:23:16 +08:00
2019-07-05 03:19:24 +08:00
class SaveTriggerComponent extends AbstractComponent {
2015-11-15 08:23:16 +08:00
/**
* @param {Object} params
*/
constructor(params) {
super();
this.element = params.element || null;
this.value = params.value && params.value.subscribe ? params.value : null;
2019-07-05 03:19:24 +08:00
if (this.element) {
if (this.value) {
2015-11-15 08:23:16 +08:00
this.element.css('display', 'inline-block');
2019-07-05 03:19:24 +08:00
if (params.verticalAlign) {
2015-11-15 08:23:16 +08:00
this.element.css('vertical-align', params.verticalAlign);
}
this.setState(this.value());
2019-07-05 03:19:24 +08:00
this.disposable.push(this.value.subscribe(this.setState, this));
} else {
2015-11-15 08:23:16 +08:00
this.element.hide();
}
}
}
setState(value) {
2019-07-05 03:19:24 +08:00
switch (pInt(value)) {
2015-11-15 08:23:16 +08:00
case SaveSettingsStep.TrueResult:
this.element
2019-07-05 03:19:24 +08:00
.find('.animated,.error')
.hide()
.removeClass('visible')
2015-11-15 08:23:16 +08:00
.end()
2019-07-05 03:19:24 +08:00
.find('.success')
.show()
.addClass('visible');
2015-11-15 08:23:16 +08:00
break;
case SaveSettingsStep.FalseResult:
this.element
2019-07-05 03:19:24 +08:00
.find('.animated,.success')
.hide()
.removeClass('visible')
2015-11-15 08:23:16 +08:00
.end()
2019-07-05 03:19:24 +08:00
.find('.error')
.show()
.addClass('visible');
2015-11-15 08:23:16 +08:00
break;
case SaveSettingsStep.Animate:
this.element
2019-07-05 03:19:24 +08:00
.find('.error,.success')
.hide()
.removeClass('visible')
2015-11-15 08:23:16 +08:00
.end()
2019-07-05 03:19:24 +08:00
.find('.animated')
.show()
.addClass('visible');
2015-11-15 08:23:16 +08:00
break;
case SaveSettingsStep.Idle:
2016-06-30 08:02:45 +08:00
default:
2015-11-15 08:23:16 +08:00
this.element
2019-07-05 03:19:24 +08:00
.find('.animated')
.hide()
2015-11-15 08:23:16 +08:00
.end()
2019-07-05 03:19:24 +08:00
.find('.error,.success')
.removeClass('visible');
2015-11-15 08:23:16 +08:00
break;
}
2016-04-21 01:12:51 +08:00
}
2015-11-15 08:23:16 +08:00
}
2017-03-01 02:44:13 +08:00
export default componentExportHelper(SaveTriggerComponent, 'SaveTriggerComponent');