(function() {
/**
* @typedef {Help4.control2.bubble.footer.BubbleFooter.Params} Help4.control2.bubble.footer.Checkbox.Params
* @property {string} [text = ''] - checkbox text
*/
/**
* Checkbox footer for bubbles.
* @augments Help4.control2.bubble.footer.BubbleFooter
* @property {string} text - checkbox text
*/
Help4.control2.bubble.footer.Checkbox = class extends Help4.control2.bubble.footer.BubbleFooter {
/**
* @override
* @param {Help4.control2.bubble.footer.Checkbox.Params} [params]
*/
constructor(params) {
const {TYPES: T} = Help4.jscore.ControlBase;
super(params, {
params: {
// all defaults are handled by bubble; do not handle here!
// keep in sync with bubble!
text: {type: T.string}
},
statics: {
_checkbox: {}
},
config: {
css: 'control-bubble-footer-checkbox'
}
});
}
/**
* @override
* @param {HTMLElement} dom - control DOM
*/
_onDomCreated(dom) {
super._onDomCreated(dom);
const {id, text} = this;
this._checkbox = this._createControl(Help4.control2.button.Option, {
id: `${id}-cb`,
dom,
text,
css: 'small'
}).addListener('select', event => {
event.type = 'checkbox';
this._fireEvent(event);
});
}
/**
* @override
* @param {Help4.jscore.ControlBase.PropertyChangeEvent} event - the change event
*/
_applyPropertyToDom({name, value, oldValue}) {
if (name === 'text') {
const {_checkbox} = this;
if (_checkbox) _checkbox.text = value;
} else {
super._applyPropertyToDom({name, value, oldValue});
}
}
}
})();