@vcl/vcl
Version:
The whole VCL in one package
104 lines (88 loc) • 2.93 kB
HTML
<div class="example-layer-width-animation">
<button id="showDialog" type="button" class="button emphasized">
<div class="icogram"><span class="text">Show Dialog</span></div>
</button>
</div>
<script>
const CLOSE_MODAL_DURATION = 0;
const docRoot = document.demoShadowRoot || document;
const showDialog = docRoot.querySelector('#showDialog');
let myTimeout;
const layerHTML = `
<div class="layer" role="dialog">
<div class="layer-box zoom">
<div class="panel panel-dialog danger m-0" role="dialog">
<div class="panel-body">
<div class="panel-content">
<div class="icogram">
<div
class="icon far fa-question-circle scale300p"
aria-hidden="true"
aria-label="account"
role="img"
></div>
<div class="text">Do you really want to delete XY?</div>
</div>
</div>
</div>
<div class="panel-footer no-bg row justify-content-end center">
<div class="loose-button-group">
<button
type="button"
class="button transparent outline cancel"
id="cancel"
>
<div class="icogram">
<span class="text">Cancel</span>
</div>
</button>
<button type="button" class="button danger delete" id="delete">
<div class="icogram">
<span class="text">Delete</span>
</div>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="layer-cover"></div>
`;
showDialog.addEventListener('click', () => {
if (myTimeout) {
clearTimeout(myTimeout);
}
showDialog.parentElement.insertAdjacentHTML('beforeend', layerHTML);
const layerCover = docRoot.querySelector('.layer-cover');
const layer = docRoot.querySelector('.layer');
const cancelBtn = docRoot.querySelector('#cancel');
const deleteBtn = docRoot.querySelector('#delete');
// Listeners
deleteBtn.addEventListener('click', () => {
layerCover.classList.add('fade-animation');
layer.classList.add('fade-animation');
myTimeout = setTimeout(function () {
layer.remove();
layerCover.remove();
}, CLOSE_MODAL_DURATION);
});
cancelBtn.addEventListener('click', () => {
layerCover.classList.add('fade-animation');
layer.classList.add('fade-animation');
myTimeout = setTimeout(() => {
layer.remove();
layerCover.remove();
}, CLOSE_MODAL_DURATION);
});
docRoot.onclick = (event) => {
if (event.target === layerCover || event.target === layer) {
layerCover.classList.add('fade-animation');
layer.classList.add('fade-animation');
myTimeout = setTimeout(() => {
layer.remove();
layerCover.remove();
}, CLOSE_MODAL_DURATION);
}
};
});
</script>