scripts/django_cradmin/widgets/PopUpWidget.js | django_cradmin API Document

# scripts/django_cradmin/widgets/PopUpWidget.js

    import AbstractWidget from "ievv_jsbase/widget/AbstractWidget";
    import DomUtilities from "../utilities/DomUtilities";

    export default class PopUpWidget extends AbstractWidget {
      getDefaultConfig() {
        return {
          signalNameSpace: null
        };
      }

      constructor(element, widgetInstanceId) {
        super(element, widgetInstanceId);
        this._widgetInstanceId = widgetInstanceId;
        this._name = `django_cradmin.widgets.PopUpWidget.${widgetInstanceId}`;
        this.logger = new window.ievv_jsbase_core.LoggerSingleton().getLogger(
          'django_cradmin.widgets.PopUpWidget');
        if(this.config.signalNameSpace == null) {
          throw new Error('The signalNameSpace config is required.');
        }
        this._onShowPopupSignal = this._onShowPopupSignal.bind(this);
        this._onHidePopupSignal = this._onHidePopupSignal.bind(this);
        this._signalHandler = new window.ievv_jsbase_core.SignalHandlerSingleton();
        this.initializeSignalHandlers();
      }

      initializeSignalHandlers() {
        this._signalHandler.addReceiver(
          `${this.config.signalNameSpace}.ShowPopup`,
          this._name,
          this._onShowPopupSignal);
        this._signalHandler.addReceiver(
          `${this.config.signalNameSpace}.HidePopup`,
          this._name,
          this._onHidePopupSignal);
      }

      destroy() {
        this._signalHandler.removeAllSignalsFromReceiver(this._name);
      }

      _onShowPopupSignal(receivedSignalInfo) {
        if(this.logger.isDebug) {
          this.logger.debug(receivedSignalInfo.toString(), receivedSignalInfo.data);
        }
        DomUtilities.show(this.element);
        document.body.classList.add('fill-view-height');
      }

      _onHidePopupSignal(receivedSignalInfo) {
        if(this.logger.isDebug) {
          this.logger.debug(receivedSignalInfo.toString(), receivedSignalInfo.data);
        }
        DomUtilities.hide(this.element);
        document.body.classList.remove('fill-view-height');
      }
    }