jQuery confirmation plugin
Simple confirmation plugin for jQuery.
Installation
To make the plugin work you need to include jQuery and styles from within ssd-confirm.css
file as well as either minified or src version of the plugin.
<link href="./assets/css/ssd-confirm.css" rel="stylesheet"> <script src="./node_modules/jquery/dist/jquery.js"></script> <script src="./src/jquery.ssd-confirm.js"></script>
You also need to add the following html towards the bottom of your page structure (all data
attributes are configurable):
Confirmation dialog
<div data-ssd-confirm> <div data-ssd-confirm-block="remove"> <p data-ssd-confirm-content></p> <nav> <span data-button-wrapper> <span class="small alert button" data-ssd-confirm-yes data-trigger >YES</span> <span class="small alert disabled button hide" data-processing ><i class="fa fa-spinner fa-spin fa-fw"></i></span> </span> <span class="small button" data-ssd-confirm-no>NO</span> </nav> </div> </div> <div data-ssd-confirm-overlay></div>
Example list of records
<table class="table-list"> <thead> <tr> <th> Name </th> <th class="col-1"> <span class="small secondary disabled button" > <i class="fa fa-trash fa-fw"></i> </span> </th> </tr> </thead> <tbody> <tr data-row> <td> Remove row after confirming </td> <td> <span class="small button" data-ssd-confirm-trigger="remove" data-ssd-confirm-message="Are you sure you wish to remove this record?<br />There is no undo!" data-ssd-confirm-url="/remove.json" data-ssd-confirm-behaviour="removeRow" > <i class="fa fa-trash fa-fw"></i> </span> </td> </tr> <tr data-row> <td> Reload after confirming </td> <td> <span class="small button" data-ssd-confirm-trigger="remove" data-ssd-confirm-message="Are you sure you wish to remove this record?<br />There is no undo!" data-ssd-confirm-url="/remove.json" data-ssd-confirm-behaviour="reload" > <i class="fa fa-trash fa-fw"></i> </span> </td> </tr> <tr data-row> <td> Reload after confirming </td> <td> <span class="small button" data-ssd-confirm-trigger="remove" data-ssd-confirm-message="Are you sure you wish to remove this record?<br />There is no undo!" data-ssd-confirm-url="/remove.json" data-ssd-confirm-behaviour="reload" > <i class="fa fa-trash fa-fw"></i> </span> </td> </tr> </tbody> </table>
Considering the above, here's how the data attributes from the two code blocks are referring to each other
data-ssd-confirm-trigger
: Associated value (in this caseremove
) corresponds to thedata-ssd-confirm-block
. You can have number of different purpose blocks.data-ssd-confirm-message
: Message that will be injected into thedata-ssd-confirm-content
.data-ssd-confirm-url
: End point to be called when theYes
button within the confirmation dialog is triggered.data-ssd-confirm-behaviour
: Method that will be executed after successful call.
Instantiating plugin
Call plugin on the instance of the trigger you wish to apply it to.
$('[data-ssd-confirm-trigger]').ssdConfirm();
Options
dataType: 'ssd-confirm-trigger', // trigger 'data-*' attribute - corresponds to the 'dataConfirmBlock'. dataMessage: 'ssd-confirm-message', // trigger 'data-*' attribute - corresponds to the 'dataConfirmContent'. dataUrl: 'ssd-confirm-url', // trigger 'data-*' attribute that stores the url / uri to be called when 'Yes' button is triggered. dataBehaviour: 'ssd-confirm-behaviour', // trigger 'data-*' attribute that indicates what method should be executed after successful call. dataConfirmWrapper: 'ssd-confirm', // dialog wrapper 'data-*' attribute. dataConfirmBlock: 'ssd-confirm-block', // dialog block type 'data-*' attribute - corresponds to 'dataType'. dataConfirmContent: 'ssd-confirm-content', // dialog content 'data-*' attribute - corresponds to 'dataMessage'. dataButtonWrapper: 'button-wrapper', // dialog button wrapper 'data-*' attribute - used when you want to show 'pending' button when ajax call is being made. dataButtonTrigger: 'trigger', // dialog trigger 'data-*' attribute - to be used with 'Yes' button. dataButtonProcessing: 'processing', // dialog processing 'data-*' attribute - to be used with button that swaps 'Yes' button when ajax call is being made. dataButtonYes: 'ssd-confirm-yes', // dialog 'yes' button 'data-*' attribute. dataButtonNo: 'ssd-confirm-no', // dialog 'no' button 'data-*' attribute. dataRecordWrapper: 'row', // list record wrapper 'data-*' attribute. dataOverlay: 'ssd-confirm-overlay', // overlay 'data-*' attribute. classActive: 'active', // dialog css class used to reveal the confirmation dialog (by default it slides it down). classShow: 'show', // dialog / overlay css class to reveal given block of the confirmation dialog and overlay. classHide: 'hide', // dialog css class to hide 'yes' / 'processing' buttons. extendBlocks: {}, // object that can extend blocks (currently only 'remove'). extendBehaviours: {} // object that can extend behaviours (currently only 'reload' and 'removeRow'). actionProperties: function(trigger, properties) { return properties; } // allows you to modify properties before the call is made.
Behaviours
Currently there are only 2 behaviours, but you can add more by adding them to the extendBehaviours
option.
reload: Reloads page. removeRow: Removes the container of the record. This option requires `dataRecordWrapper` to be applied to the container of your record (default `data-row`), which should contain the trigger button.
Example of removeRow
:
<tr data-row> <td> Record name </td> <td> <span class="small button" data-ssd-confirm-trigger="remove" data-ssd-confirm-message="Are you sure you wish to remove this record?<br />There is no undo!" data-ssd-confirm-url="/remove.json" data-ssd-confirm-behaviour="removeRow" > <i class="fa fa-trash fa-fw"></i> </span> </td> </tr>
Behaviour methods take 3 arguments:
* data: // data returned from ajax call * trigger: // instance of the 'yes' button * properties: // object containing: * url: // url / uri to be called * behaviour: // behaviour name * originator: // instance of the button that triggered the dialog * processing: // instance of the 'processing' button if exists - otherwise 'null'