1.0.5 • Published 1 year ago

ray-dialog-box v1.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

RayDialog

A beautiful, responsive, customizable, accessible (WAI-ARIA) replacement for JavaScript's popup boxes. Zero dependencies.


Installation

npm install --save ray-dialog-box

Usage

<script src="/lib/ray-dialog-box"></script>
<link rel="stylesheet" type="text/css" href="/lib/raydialog.css">

<!-- Include a polyfill for ES6 Promises (optional) for IE11, UC Browser and Android browser support -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.js"></script>

Or:

// ES6 Modules or TypeScript
import rayd from 'ray-dialog-box'

// CommonJS
const rayd = require('ray-dialog-box')

Please note that TypeScript is supported, so you don't have to install a third-party declaration file.

Examples

The most basic message:

rayd('Hello world!')

A message signaling an error:

rayd('Oops...', 'Something went wrong!', 'error')

Handling the result of RayDialog modal:

rayd({
  title: 'Are you sure?',
  text: 'You will not be able to recover this imaginary file!',
  type: 'warning',
  showCancelButton: true,
  confirmButtonText: 'Yes, delete it!',
  cancelButtonText: 'No, keep it'
}).then(function() {
  rayd(
    'Deleted!',
    'Your imaginary file has been deleted.',
    'success'
  )
}, function(dismiss) {
  // dismiss can be 'overlay', 'cancel', 'close', 'esc', 'timer'
  if (dismiss === 'cancel') {
    rayd(
      'Cancelled',
      'Your imaginary file is safe :)',
      'error'
    )
  }
})

Handling Dismissals

When an alert is dismissed by the user, the Promise returned by rayd() will reject with a string documenting the reason it was dismissed:

StringDescriptionRelated configuration
'overlay'The user clicked the overlay.allowOutsideClick
'cancel'The user clicked the cancel button.showCancelButton
'close'The user clicked the close button.showCloseButton
'esc'The user pressed the Esc key.allowEscapeKey
'timer'The timer ran out, and the alert closed automatically.timer

If rejections are not handled, it will be logged as an error. To avoid this, add a rejection handler to the Promise. Alternatively, you can use .catch(rayd.noop) as a quick way to simply suppress the errors:

rayd(...)
  .catch(rayd.noop)

Modal Types

| success | error | warning | info | question |

Configuration

ArgumentDefault valueDescription
titlenullThe title of the modal, as HTML. It can either be added to the object under the key "title" or passed as the first parameter of the function.
titleText            nullThe title of the modal, as text. Useful to avoid HTML injection.
text                null              A description for the modal. It can either be added to the object under the key "text" or passed as the second parameter of the function.
htmlnullA HTML description for the modal. If text and html parameters are provided in the same time, "text" will be used.
typenullThe type of the modal. RayDialog comes with 5 built-in types which will show a corresponding icon animation: warning, error, success, info and question. It can either be put in the array under the key type or passed as the third parameter of the function.
target'body'The container element for adding modal into.
inputnullInput field type, can be 'text', 'email', 'password', 'number', 'tel', 'range', 'textarea', 'select', 'radio', 'checkbox', 'file' and 'url'.
width'500px'Modal window width, including paddings (box-sizing: border-box). Can be in px or %.
padding20Modal window padding.
background'#fff'Modal window background (CSS background property).
customClassnullA custom CSS class for the modal.
timernullAuto close timer of the modal. Set in ms (milliseconds).
animationtrueIf set to false, modal CSS animation will be disabled.
emphasizefalseIf set to true, modal will use emphasize animation.
allowOutsideClicktrueIf set to false, the user can't dismiss the modal by clicking outside it.
allowEscapeKeytrueIf set to false, the user can't dismiss the modal by pressing the Esc key.
allowEnterKeytrueIf set to false, the user can't confirm the modal by pressing the Enter or Space keys, unless they manually focus the confirm button.
showConfirmButtontrueIf set to false, a "Confirm"-button will not be shown. It can be useful when you're using html parameter for custom HTML description.
showCancelButtonfalseIf set to true, a "Cancel"-button will be shown, which the user can click on to dismiss the modal.
confirmButtonText'OK'Use this to change the text on the "Confirm"-button.
cancelButtonText'Cancel'Use this to change the text on the "Cancel"-button.
confirmButtonColor'#3085d6'Use this to change the background color of the "Confirm"-button (must be a HEX value).
cancelButtonColor'#aaa'Use this to change the background color of the "Cancel"-button (must be a HEX value).
confirmButtonClassnullA custom CSS class for the "Confirm"-button.
cancelButtonClassnullA custom CSS class for the "Cancel"-button.
buttonsStylingtrueApply default styling to buttons. If you want to use your own classes (e.g. Bootstrap classes) set this parameter to false.
reverseButtonsfalseSet to true if you want to invert default buttons positions ("Confirm"-button on the right side).
focusCancelfalseSet to true if you want to focus the "Cancel"-button by default.
showCloseButtonfalseSet to true to show close button in top right corner of the modal.
showLoaderOnConfirmfalseSet to true to disable buttons and show that something is loading. Useful for AJAX requests.
preConfirmnullFunction to execute before confirm, should return Promise.
imageUrlnullAdd an image for the modal. Should contain a string with the path or URL to the image.
imageWidthnullIf imageUrl is set, you can specify imageWidth to describes image width in px.
imageHeightnullCustom image height in px.
imageClassnullA custom CSS class for the image.
inputPlaceholder''Input field placeholder.
inputValue''Input field initial value.
inputOptions{} or PromiseIf input parameter is set to 'select' or 'radio', you can provide options. Object keys will represent options values, object values will represent options text values.
inputAutoTrimtrueAutomatically remove whitespaces from both ends of a result string. Set this parameter to false to disable auto-trimming.
inputAttributes{}HTML input attributes (e.g. 'min', 'max', 'autocomplete', 'accept'), that are added to the input field. Object keys will represent attributes names, object values will represent attributes values.
inputValidatornullValidator for input field, should return Promise.
inputClassnullA custom CSS class for the input field.
progressSteps[]Progress steps, useful for modal queues.
currentProgressStepnullCurrent active progress step. The default is rayd.getQueueStep().
progressStepsDistance'40px'Distance between progress steps.
onOpennullFunction to run when modal opens, provides modal DOM element as the first argument.
onClosenullFunction to run when modal closes, provides modal DOM element as the first argument.
useRejectionstrueDetermines whether dismissals (outside click, cancel button, close button, esc key) should reject, or resolve with an object of the format { dismiss: reason }. Set it to false to get a cleaner control flow when using await.

You can redefine default params by using rayd.setDefaults(customParams) where customParams is an object.

Methods

MethodDescription
rayd.isVisible()Determine if modal is shown.
rayd.setDefaults({Object})If you end up using a lot of the same settings when calling RayDialog, you can use setDefaults at the start of your program to set them once and for all!
rayd.resetDefaults()Resets settings to their default value.
rayd.close() or rayd.closeModal()Close the currently open RayDialog modal programmatically.
rayd.getTitle()Get the modal title.
rayd.getContent()Get the modal content.
rayd.getImage()Get the image.
rayd.getConfirmButton()Get the "Confirm" button.
rayd.getCancelButton()Get the "Cancel" button.
rayd.enableButtons()Enable "Confirm" and "Cancel" buttons.
rayd.disableButtons()Disable "Confirm" and "Cancel" buttons.
rayd.enableConfirmButton()Enable the "Confirm"-button only.
rayd.disableConfirmButton()Disable the "Confirm"-button only.
rayd.enableLoading() or rayd.showLoading()Disable buttons and show loader. This is useful with AJAX requests.
rayd.disableLoading() or rayd.hideLoading()Enable buttons and hide loader.
rayd.clickConfirm()Click the "Confirm"-button programmatically.
rayd.clickCancel()Click the "Cancel"-button programmatically.
rayd.showValidationError(error)Show validation error message.
rayd.resetValidationError()Hide validation error message.
rayd.getInput()Get the input DOM node, this method works with input parameter.
rayd.disableInput()Disable input. A disabled input element is unusable and un-clickable.
rayd.enableInput()Enable input.
rayd.queue([Array])Provide array of RayDialog parameters to show multiple modals, one modal after another or a function that returns alert parameters given modal number.
rayd.getQueueStep()Get the index of current modal in queue. When there's no active queue, null will be returned.
rayd.insertQueueStep()Insert a modal to queue, you can specify modal positioning with second parameter. By default a modal will be added to the end of a queue.
rayd.deleteQueueStep(index)Delete a modal at index from queue.
rayd.getProgressSteps()Progress steps getter.
rayd.setProgressSteps([])Progress steps setter.
rayd.showProgressSteps()Show progress steps.
rayd.hideProgressSteps()Hide progress steps.

Browser compatibility

IE11*EdgeChromeFirefoxSafariOperaAndroid Browser*UC Browser*

* ES6 Promise polyfill should be included, see usage example.

Note that RayDialog does not and will not provide support or functionality of any kind on IE10 and lower.

1.0.5

1 year ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago