Source: control2/bubble/footer/Checkbox.js

(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});
            }
        }
    }
})();