# All files / js dialogSystem.jsx

41.67% Statements 5/12
0% Branches 0/9
100% Functions 1/1
41.67% Lines 5/12

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56

    1x
    1x

    1x
    1x

    1x

     'use strict'

    import hub from './hub'
    import { DialogChangedEvent } from './events'

    class DialogSystem {
      constructor () {
        this._dialogInstance = null
      }

      // invoked by the application once the dialog has been created.
      notifyDialogInstance (dialog) {
        this._dialogInstance = dialog
      }

      // given a dialog class this will instruct the application to bring up
      // the dialog and display it.
      showDialog (dialog, options) {
        // if the current dialog prevents navigation, then we just silently
        // will not show the dialog.
        if (!this.preventNavigation()) {
          hub.emit(new DialogChangedEvent({
            dialog: dialog,
            dialogOptions: options || {}
          }))
        }
      }

      // tells the application to dismiss the current dialog.
      dismissDialog () {
        if (!this.preventNavigation()) {
          hub.emit(new DialogChangedEvent({
            currentDialog: null
          }))
        }
      }

      // indicates if a dialog is shown
      dialogIsOpen () {
        return !!this._dialogInstance
      }

      // returns true if the current dialog prevents navigation.
      preventNavigation () {
        return (
          this._dialogInstance &&
          this._dialogInstance.preventNavigation !== undefined &&
          this._dialogInstance.preventNavigation()
        )
      }
    }

    const dialogSystem = new DialogSystem()

    export default dialogSystem