ray-dialog-box
v1.0.5
Published
ray dialog
Downloads
3
Readme
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:
| String | Description | Related 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
| Argument | Default value | Description |
| ----------------------- | -------------------- | ----------- |
| title
| null
| The 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
| null
| The 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. |
| html
| null
| A HTML description for the modal. If text
and html
parameters are provided in the same time, "text" will be used. |
| type
| null
| The 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. |
| input
| null
| Input 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 %
. |
| padding
| 20
| Modal window padding. |
| background
| '#fff'
| Modal window background (CSS background
property). |
| customClass
| null
| A custom CSS class for the modal. |
| timer
| null
| Auto close timer of the modal. Set in ms (milliseconds). |
| animation
| true
| If set to false
, modal CSS animation will be disabled. |
| emphasize
| false
| If set to true
, modal will use emphasize animation. |
| allowOutsideClick
| true
| If set to false
, the user can't dismiss the modal by clicking outside it. |
| allowEscapeKey
| true
| If set to false
, the user can't dismiss the modal by pressing the Esc key. |
| allowEnterKey
| true
| If set to false
, the user can't confirm the modal by pressing the Enter or Space keys, unless they manually focus the confirm button. |
| showConfirmButton
| true
| If set to false
, a "Confirm"-button will not be shown. It can be useful when you're using html
parameter for custom HTML description. |
| showCancelButton
| false
| If 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). |
| confirmButtonClass
| null
| A custom CSS class for the "Confirm"-button. |
| cancelButtonClass
| null
| A custom CSS class for the "Cancel"-button. |
| buttonsStyling
| true
| Apply default styling to buttons. If you want to use your own classes (e.g. Bootstrap classes) set this parameter to false
. |
| reverseButtons
| false
| Set to true
if you want to invert default buttons positions ("Confirm"-button on the right side). |
| focusCancel
| false
| Set to true
if you want to focus the "Cancel"-button by default. |
| showCloseButton
| false
| Set to true
to show close button in top right corner of the modal. |
| showLoaderOnConfirm
| false
| Set to true
to disable buttons and show that something is loading. Useful for AJAX requests. |
| preConfirm
| null
| Function to execute before confirm, should return Promise. |
| imageUrl
| null
| Add an image for the modal. Should contain a string with the path or URL to the image. |
| imageWidth
| null
| If imageUrl is set, you can specify imageWidth to describes image width in px. |
| imageHeight
| null
| Custom image height in px. |
| imageClass
| null
| A custom CSS class for the image. |
| inputPlaceholder
| ''
| Input field placeholder. |
| inputValue
| ''
| Input field initial value. |
| inputOptions
| {}
or Promise
| If 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. |
| inputAutoTrim
| true
| Automatically 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. |
| inputValidator
| null
| Validator for input field, should return Promise. |
| inputClass
| null
| A custom CSS class for the input field. |
| progressSteps
| []
| Progress steps, useful for modal queues. |
| currentProgressStep
| null
| Current active progress step. The default is rayd.getQueueStep()
. |
| progressStepsDistance
| '40px'
| Distance between progress steps. |
| onOpen
| null
| Function to run when modal opens, provides modal DOM element as the first argument. |
| onClose
| null
| Function to run when modal closes, provides modal DOM element as the first argument. |
| useRejections
| true
| Determines 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
| Method | Description |
| ----------------------------------------------- | ----------- |
| 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* | Edge | Chrome | Firefox | Safari | Opera | Android 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.