The component must be initialized from Javascript. In the Envision scripted component you will find a few extra features:
Opener button added as option on initialization
Close on click outside as an option
Nice fade-in animation
Focus trap to keep tab navigation from leaving the dialog
Default dialog
Basic dialog example
<buttonid="example-dialog-1-opener"type="button"class="env-button env-button--primary env-button--large">
Show dialog
</button><dialogid="example-dialog-1"class="env-dialog"aria-labelledby="dialogHeader-1"><h2class="env-dialog__title"id="dialogHeader-1">Dialog Title</h2><divclass="env-dialog__main"><pclass="env-text">
Caticus cuteicus wake up wander around the house making large amounts
of noise jump on top of your human's bed and fall asleep.
</p></div><divclass="env-dialog__controls"><formmethod="dialog"><buttontype="submit"value="save"class="env-button env-button--primary">
Save
</button><buttontype="submit"value="cancel"class="env-button env-button--link">
Cancel
</button></form></div></dialog>
Use modifier env-dialog__controls--end to align controls to the right.
Optional sizes
Use env-dialog--large or env-dialog--small to control dialog size.
<buttonid="example-dialog-2-opener"type="button"class="env-button env-button--primary">
Show large dialog
</button><dialogid="example-dialog-2"class="env-dialog env-dialog--large"aria-labelledby="dialogHeader-2"><h2class="env-dialog__title"id="dialogHeader-2">Large dialog</h2><divclass="env-dialog__main"><pclass="env-text">
Caticus cuteicus wake up wander around the house making large amounts
of noise jump on top of your human's bed and fall asleep.
</p></div><divclass="env-dialog__controls env-dialog__controls--end"><formmethod="dialog"><buttontype="submit"value="save"class="env-button env-button--primary">
Save
</button><buttontype="submit"value="cancel"class="env-button env-button--link">
Cancel
</button></form></div></dialog><buttonid="example-dialog-3-opener"type="button"class="env-button env-button--primary env-button--ghost">
Show small dialog
</button><dialogid="example-dialog-3"class="env-dialog env-dialog--small"aria-labelledby="dialogHeader-3"><h2class="env-dialog__title"id="dialogHeader-3">Small dialog</h2><divclass="env-dialog__main"><pclass="env-text">
Caticus cuteicus wake up wander around the house making large amounts
of noise jump on top of your human's bed and fall asleep.
</p></div><divclass="env-dialog__controls"><formmethod="dialog"><buttontype="submit"value="save"class="env-button env-button--primary">
Save
</button><buttontype="submit"value="cancel"class="env-button env-button--link">
Cancel
</button></form></div></dialog>
Scrolling
The element env-dialog__main is scrollable when content makes the dialog too large to fit the viewport.
<buttonid="example-dialog-4-opener"type="button"class="env-button env-button--primary">
Show scrollable dialog
</button><dialogid="example-dialog-4"class="env-dialog"aria-labelledby="dialogHeader-4"><h2class="env-dialog__title"id="dialogHeader-4">Scrollable dialog</h2><divclass="env-dialog__main"><pclass="env-text">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien
turpis, aliquam nec porta ultrices, auctor ut mauris. Ut volutpat
ornare consectetur. Phasellus nec nisi non tellus gravida porttitor a
in arcu. Aliquam erat volutpat. Phasellus laoreet urna sem. In dui
arcu, facilisis sed mollis at, bibendum vel purus. In sagittis lobortis
tellus, sit amet egestas est dignissim vel. Vivamus a consequat nunc.
Vestibulum eleifend malesuada quam id lacinia. Duis porta mauris et
justo vehicula, sit amet malesuada tellus sollicitudin. Etiam
convallis, ipsum non ultrices auctor, elit orci blandit est, vel
finibus arcu massa eu lorem. Fusce sit amet est non tellus vulputate
semper in eget est. In tincidunt ligula nec mauris tristique sagittis.
Pellentesque interdum eleifend eros a viverra. Ut volutpat ut nisi nec
gravida. Duis non sollicitudin ligula, ac vehicula turpis.
</p><pclass="env-text">
Duis eget lacus nec neque semper commodo. Nullam nisi nibh, vehicula
eget condimentum sed, dictum vulputate erat. Quisque ut gravida magna.
Cras eleifend maximus odio, quis tincidunt enim consectetur eu. Sed nec
arcu auctor, porttitor eros malesuada, feugiat justo. Nulla ante augue,
ultricies eu blandit et, vulputate sed nibh. Suspendisse in dapibus
sapien. Fusce pulvinar, ligula vitae dapibus convallis, urna lectus
viverra diam, a lobortis magna diam id libero. Duis et venenatis dolor,
ac semper eros. Nunc tincidunt tempor enim.
</p><pclass="env-text">
Vivamus eget sagittis velit. Quisque magna libero, egestas a rutrum ac,
imperdiet ac augue. Fusce nibh magna, sollicitudin sit amet massa in,
iaculis tempus quam. Ut sodales commodo ante, in rutrum nunc semper
quis. Vestibulum sed sollicitudin est. Etiam posuere id velit sit amet
dictum. Nam semper placerat ultrices. Suspendisse in massa porttitor,
faucibus neque sed, convallis velit. Nulla luctus ipsum a feugiat
porta.
</p><pclass="env-text">
Duis ultricies gravida nunc, vitae fringilla sapien convallis ac. Lorem
ipsum dolor sit amet, consectetur adipiscing elit. Praesent fermentum
pellentesque euismod. Cras dictum feugiat nisi, tincidunt imperdiet
nunc pharetra vitae. Nunc ut neque in metus tristique bibendum. Vivamus
nec lorem odio. Vestibulum pellentesque cursus diam in tempor.
</p><pclass="env-text">
Praesent id diam elementum, consequat nisl vitae, congue turpis. Sed
sit amet cursus quam, vitae sagittis lorem. Morbi erat lectus, tempus
eget interdum ac, blandit sit amet ante. Praesent scelerisque bibendum
quam ut ornare. Duis ipsum ex, tincidunt vel volutpat eget, bibendum
eget odio. Duis vitae tristique eros. Praesent at dui et velit
porttitor malesuada sit amet a elit.
</p><pclass="env-text">
Donec at augue quis dolor porta rutrum. Nullam fringilla lobortis
sapien ac cursus. Ut id egestas odio, mattis ornare dui. Etiam interdum
venenatis quam id lobortis. Nunc id enim luctus, porta leo vitae,
tristique lectus. In vel tortor nec lacus facilisis euismod vitae
porttitor ligula. Vivamus ut mauris id urna dictum vestibulum.
</p><pclass="env-text">
Mauris interdum fermentum turpis, at ullamcorper sapien accumsan sit
amet. Phasellus vitae augue volutpat, convallis elit sed, eleifend
nisl. Sed at lorem dui. Nunc scelerisque nisi sapien, non sollicitudin
tellus luctus vitae. Vivamus molestie turpis eu enim blandit, rutrum
egestas nisl hendrerit. Mauris pharetra commodo malesuada. Proin at
nisl nec turpis lacinia hendrerit non non orci. Cras tempor quam a
mauris placerat lacinia. Donec eget sem ac tellus porttitor hendrerit.
Duis congue risus non eros pharetra, ut facilisis risus ullamcorper.
Vivamus fringilla suscipit lorem eu fermentum. Orci varius natoque
penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Mauris tristique, leo et laoreet imperdiet, leo ligula egestas nibh, at
accumsan lorem nibh ut nulla. Vivamus vitae ornare est. Suspendisse
convallis tortor et nulla porttitor dictum.
</p></div><divclass="env-dialog__controls"><formmethod="dialog"><buttontype="submit"value="save"class="env-button env-button--primary">
Save
</button><buttontype="submit"value="cancel"class="env-button env-button--link">
Cancel
</button></form></div></dialog>
The alertdialog role is to be used on modal alert dialogs that interrupt a user’s workflow to communicate an important message and require a response.
To make a Dialog an alertdialog, add role="alertdialog", and make sure to use an accessible name and description for example by adding attributes aria-labelledby and aria-describedby.
Note: The option backdropClick will automatically be set to false for alertdialogs and can not be overridden. Keypress Escape will not close the dialog.
Available alertdialog variations: env-dialog--'error', 'success', 'warning', 'info'
<buttonid="example-alertdialog-1-opener"type="button"class="env-button env-button--primary">
Alert Dialog
</button><dialogrole="alertdialog"aria-labelledby="example-alertdialog-1-header"aria-describedby="example-alertdialog-1-desc"id="example-alertdialog-1"class="env-dialog"><divclass="env-dialog__icon"><svgclass="env-icon env-icon--large"><usehref="/sitevision/envision-icons.svg#icon-check-line"></use></svg></div><h2class="env-dialog__title"id="example-alertdialog-1-header">
Alert Dialog
</h2><divclass="env-dialog__main"id="example-alertdialog-1-desc"><pclass="env-text">
Caticus cuteicus wake up wander around the house making large amounts
of noise jump on top of your human's bed and fall asleep.
</p></div><divclass="env-dialog__controls"><formmethod="dialog"><buttontype="submit"value="ok"class="env-button env-button--primary">
OK
</button><buttontype="submit"value="cancel"class="env-button env-button--link">
Cancel
</button></form></div></dialog><buttonid="example-alertdialog-2-opener"type="button"class="env-button env-button--success">
Success Alert Dialog
</button><dialogrole="alertdialog"aria-labelledby="example-alertdialog-2-header"aria-describedby="example-alertdialog-2-desc"id="example-alertdialog-2"class="env-dialog env-dialog--success"><divclass="env-dialog__icon"><svgclass="env-icon env-icon--large"><usehref="/sitevision/envision-icons.svg#icon-thumb-up"></use></svg></div><h2class="env-dialog__title"id="example-alertdialog-2-header">
Success Dialog Title
</h2><divclass="env-dialog__main"id="example-alertdialog-2-desc"><pclass="env-text">
Caticus cuteicus wake up wander around the house making large amounts
of noise jump on top of your human's bed and fall asleep.
</p></div><divclass="env-dialog__controls env-dialog__controls--end"><formmethod="dialog"><buttontype="submit"value="ok"class="env-button env-button--success">
OK
</button></form></div></dialog><buttonid="example-alertdialog-3-opener"type="button"class="env-button env-button--danger">
Error Alert Dialog
</button><dialogrole="alertdialog"aria-labelledby="example-alertdialog-3-header"aria-describedby="example-alertdialog-3-desc"id="example-alertdialog-3"class="env-dialog env-dialog--error"><divclass="env-dialog__icon"><svgclass="env-icon env-icon--large"><usehref="/sitevision/envision-icons.svg#icon-delete"></use></svg></div><h3class="env-dialog__title"id="example-alertdialog-3-header">
Error Dialog Title
</h3><divclass="env-dialog__main"id="example-alertdialog-3-desc"><pclass="env-text">
Caticus cuteicus wake up wander around the house making large amounts
of noise jump on top of your human's bed and fall asleep.
</p></div><divclass="env-dialog__controls"><formmethod="dialog"><buttontype="submit"value="ok"class="env-button env-button--block env-button--danger">
OK
</button></form></div></dialog>
A selector as a string or a DOM Node to assign event listener for opening the dialog.
Default value: null
backdropClickboolean
Click on backdrop (outside dialog) should close the dialog (not available for alertdialog).
Default value: true
placement‘string’since Sitevision 2024.09.2
Dialog window should be moved in the DOM and open as an immediate child of <body>.
Allowed values: 'body'
Default value: null
API
Instances of Dialog may be controlled by the methods described below.
envision.dialog('#dialog',{opener:'#opener'}).then(function(dialogs){
console.log(dialogs[0].el.open);// dialogs[0].show(); // Uncomment to show dialog on load});
envision.dialog('#dialog').then(function(dialogs){// Custom opener event
document.querySelector('#opener').addEventListener('click',()=>{// ... before show ...
dialogs[0].show();});});
envision
.dialog(document.querySelector('#dialog'),{opener:'#opener',}).then((dialogs)=>{
dialogs[0].el.addEventListener('close',()=>{// ... do something when dialog is closed
console.log(dialogs[0].el.returnValue);});});
Legacy documentation
Dialog is a replacement for Modal Dialog, deprecated since 2023.07.1.