<dialog id="dialogbox" aria-labelledby="legend" data-colour="set" class="">
<form formaction="" formmethod="post">
<fieldset>
<legend id="legend" class="">
<h2>Detailed <span class="">set</span> Information</h2>
</legend>
<div class="modal-header">
<h3 slot="header-slot">Name: Batman the Videogame - PSP</h3>
</div>
<div class="modal-body">
<div slot="body-slot">
<p>Set Number: 1000368666-1</p>
<p>Year released: 2008</p>
</div>
</div>
<div class="modal-footer">
<div class="button-bar" slot="footer-slot">
<div class="form-input">
<button id="" class=" sets" onclick="">
<span class="buttonmask">
<img src="../../images/bricknav-thick-studs.png" alt="lego brick - {finder_pagename}s find">
<span class="button-label">Close</span>
</span>
</button>
</div>
</div>
</div>
</fieldset>
</form>
</dialog>
<button id="openDialog" class=" sets" onclick="">
<span class="buttonmask">
<img src="../../images/bricknav-thick-studs.png" alt="lego brick - {finder_pagename}s find">
<span class="button-label">Dialog</span>
</span>
</button><button id="openModal" class=" sets" onclick="">
<span class="buttonmask">
<img src="../../images/bricknav-thick-studs.png" alt="lego brick - {finder_pagename}s find">
<span class="button-label">Modal</span>
</span>
</button>
<dialog id="dialogbox" aria-labelledby="legend" data-colour="set" class="" >
<form formaction="" formmethod="post">
<fieldset>
<legend id="legend" class="">
<h2>Detailed <span class="">set</span> Information</h2>
</legend>
<div class="modal-header">
<h3 slot="header-slot">Name: Batman the Videogame - PSP</h3>
</div>
<div class="modal-body">
<div slot="body-slot">
<p>Set Number: 1000368666-1</p>
<p>Year released: 2008</p>
</div>
</div>
<div class="modal-footer">
<div class="button-bar" slot="footer-slot">
<div class="form-input">
{{!-- <button type="submit" formmethod="dialog">
<span class="buttonmask">
<img src="/bricknav-thick-studs.png" alt="lego brick - sets dialog">
<span class="button-label">Close</span>
</span>
</button> --}}
{{> @buttons--stand-alone btn_class="sets" btn_label="Close"}}
</div>
</div>
</div>
</fieldset>
</form>
</dialog>
{{> @buttons--top-navigation unique_id="openDialog" btn_class="sets" btn_label="Dialog" }}
{{> @buttons--top-navigation unique_id="openModal" btn_class="sets" btn_label="Modal" }}
/* No context defined. */
No notes defined.
dialog {
border-width: medium;
border-radius: 6px;
padding-bottom: 42px;
user-select: none;
}
dialog[data-colour=part] {
background-color: #9acd32;
border-color: var(--brick-color-parts-normal)
}
dialog[data-colour=colour] {
background-color: #87cefa;
border-color: var(--brick-color-colours-normal)
}
dialog[data-colour=set] {
background-color: #f7ecec;
border-color: var(--brick-color-sets-normal)
}
dialog[data-colour=minifig] {
background-color: var(--brick-color-lightpurple);
border-color: var(--brick-color-minifigs-normal)
}
dialog::backdrop {
background-color: #2f4f4f;
opacity: .8
}
legend:hover {
cursor: all-scroll;
}
legend span {
display: inline-block
}
legend span:first-letter {
text-transform: capitalize
}
var state = {
isDragging: false,
isHidden: true,
mouseX:0,
mouseY:0,
xDiff: 0,
yDiff: 0,
x: 0,
y: 0,
};
const openDialog = document.getElementById("openDialog");
const openModal = document.getElementById("openModal");
const dialogbox = document.getElementById("dialogbox");
function openCheck(dialogbox) {
if (dialogbox.open) {
openDialog.style.visibility = "hidden";
openModal.style.visibility = "hidden";
state.isHidden = false
} else {
openDialog.style.visibility = "visible";
openModal.style.visibility = "visible";
state.isHidden = true
}
}
if(openDialog){
openDialog.addEventListener("click", () => {
dialogbox.show();
openCheck(dialogbox);
});
}
if(openModal){
openModal.addEventListener("click", () => {
dialogbox.showModal();
openCheck(dialogbox);
});
}
if(dialogbox){
dialogbox.addEventListener("close", () => {
openCheck(dialogbox);
});
dialogbox.addEventListener("click", (e) => {
const dialogDimensions = dialogbox.getBoundingClientRect()
if (
e.clientX < dialogDimensions.left ||
e.clientX > dialogDimensions.right ||
e.clientY < dialogDimensions.top ||
e.clientY > dialogDimensions.bottom
) {
dialogbox.close()
}
})
}
renderWindow(dialogbox, state);
let dragArea = document.querySelector('legend');
if(dragArea){
dragArea.addEventListener('mousedown', onMouseDown);
document.addEventListener('mousemove', onMouseMove);
document.addEventListener('mouseup', onMouseUp);
}
function renderWindow(dialogbox, myState) {
if(dialogbox){
if (state.isHidden) {
dialogbox.setAttribute('draggable', true)
} else {
dialogbox.setAttribute('draggable', false)
}
openCheck(dialogbox)
if(myState.mouseX > 1 || myState.mouseX < window.innerWidth && myState.mouseY > 1 || myState.mouseY < window.innerHeight){
dialogbox.style.transform = 'translate(' + myState.x + 'px, ' + myState.y + 'px)';
}
if(myState.mouseX <= 1 || myState.mouseX >= window.innerWidth){
dialogbox.setAttribute('draggable', false);
state.isDragging = false;
document.body.style.overflow = "hidden";
}else if(myState.mouseY < 0 || myState.mouseY >= window.innerHeight){
dialogbox.setAttribute('draggable', false);
state.isDragging = false;
document.body.style.overflow = "hidden";
}
}
}
function onMouseMove(e) {
if (state.isDragging) {
document.body.style.overflow = "hidden"
state.x = e.clientX - state.xDiff;
state.y = e.clientY - state.yDiff;
state.mouseX = e.clientX;
state.mouseY = e.clientY;
}
var dialogbox = document.getElementById('dialogbox');
renderWindow(dialogbox, state);
}
function onMouseDown(e) {
state.isDragging = true;
state.xDiff = e.pageX - state.x;
state.yDiff = e.pageY - state.y;
}
function onMouseUp() {
document.body.style.overflow = "auto"
state.isDragging = false;
}