(function() {
/**
* Bubble control for providing learning feedback.
* @augments Help4.control2.bubble.Bubble
*/
Help4.widget.learning.FeedbackBubbleControl = class extends Help4.control2.bubble.Bubble {
/**
* @override
* @param {Help4.control2.bubble.Bubble.Params} params
*/
constructor(params) {
super(params, {
params: {
headerLayout: {init: Help4.control2.bubble.HEADER_LAYOUT.CaptionTranslateClose},
contentLayout: {init: 'Help4.widget.learning.FeedbackBubbleContentControl'},
footerLayout: {init: 'Help4.widget.learning.FeedbackBubbleFooterControl'},
resizableAlign: {init: true},
size: {init: 's'},
modal: {init: true},
enableDragDrop: {init: true}
},
config: {
css: 'bubble-feedback'
}
});
}
/**
* incompatible override!
* @override
*/
_onCreateContent() {
super._onCreateContent({textOnly: false});
this._content?.addListener('change', event => {
const {
/** @type {Help4.widget.learning.FeedbackBubbleContentControl.Data} */ data: {rating, text}
} = event;
if (this._footer) this._footer.disableSend = rating === 0 && !text;
this._fireEvent(event);
});
}
/**
* incompatible override!
* @override
*/
_onCreateFooter() {
super._onCreateFooter();
this._footer?.addListener(['send', 'close'], event => void this._fireEvent(event));
}
/** @override */
_onGetDragDropParams() {
const {_header, remoteMode} = this;
return {
object: this.getDom(),
area: _header.getDragDropElement(),
remoteMode
}
}
}
})();