Dialogs

<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.

  • Content:
    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
    }
    
  • URL: /components/raw/dialogs/_dialogs.scss
  • Filesystem Path: components/basic-elements/dialogs/_dialogs.scss
  • Size: 800 Bytes
  • Content:
    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;
    }
    
    
    
  • URL: /components/raw/dialogs/dialogs.js
  • Filesystem Path: components/basic-elements/dialogs/dialogs.js
  • Size: 2.9 KB