mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-12-31 03:52:01 +08:00
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
import { SaveSettingStatus } from 'Common/Enums';
|
|
import { dispose, koComputable } from 'External/ko';
|
|
import { defaultOptionsAfterRender } from 'Common/Utils';
|
|
|
|
export class SelectComponent {
|
|
/**
|
|
* @param {Object} params
|
|
*/
|
|
constructor(params) {
|
|
this.value = params.value;
|
|
this.label = params.label;
|
|
this.trigger = params.trigger?.subscribe ? params.trigger : null;
|
|
this.placeholder = params.placeholder;
|
|
this.options = params.options;
|
|
this.optionsText = params.optionsText;
|
|
this.optionsValue = params.optionsValue;
|
|
|
|
let size = 0 < params.size ? 'span' + params.size : '';
|
|
if (this.trigger) {
|
|
const
|
|
classForTrigger = ko.observable(''),
|
|
setTriggerState = value => {
|
|
switch (value) {
|
|
case SaveSettingStatus.Success:
|
|
classForTrigger('success');
|
|
break;
|
|
case SaveSettingStatus.Failed:
|
|
classForTrigger('error');
|
|
break;
|
|
default:
|
|
classForTrigger('');
|
|
break;
|
|
}
|
|
};
|
|
|
|
setTriggerState(this.trigger());
|
|
|
|
this.className = koComputable(() =>
|
|
(size + ' settings-save-trigger-input ' + classForTrigger()).trim()
|
|
);
|
|
|
|
this.disposables = [
|
|
this.trigger.subscribe(setTriggerState, this),
|
|
this.className
|
|
];
|
|
} else {
|
|
this.className = size;
|
|
}
|
|
|
|
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
|
|
}
|
|
|
|
dispose() {
|
|
this.disposables?.forEach(dispose);
|
|
}
|
|
}
|