Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-9449

Impossible to use blank strings as dialog titles

    Details

    • Flags:
      Patch

      Description

      Currently there is no way to create a dialog in the Cordova Dialogs plugin without a title. Providing an empty string as the title for any of alert, confirm, or prompt results in a non-localized default title. This makes it impossible to show message-only dialogs on platforms that support such a thing, like iOS. Currently, all dialogs must have a title and additionally prompts must have a message, whether they are provided by the developer or forced by the plugin.

      No workarounds

      There are no known workarounds. One that came to mind was passing a space character navigator.notification.alert('message', null, ' '); but on iOS this results in a blank space for the title at the top of the alert. Sending an object that will evaluate to true but return a blank string when stringified causes the app to crash navigator.notification.alert('message', null, {toString: function() { return ''; }});

      Solution

      Rather than testing whether title is falsy to set the default, test whether it is a string, regardless of whether it is a falsy empty string.

      Breaking change?

      Requiring the title to be a string prevents numeric and other values from being used, while previously they were passed through to the native plugin. This is a good thing because sending anything other than a string causes the plugin to crash the app (at least on iOS), so despite being more restrictive about the data type, I do not consider it a breaking change.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              idpaterson Ian Paterson
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: