dna-engine ~~ Data click

An uncomplicated user interface library

by pilafmon

HTML

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dna-engine@3/dist/dna-engine.css">
<script src="https://cdn.jsdelivr.net/npm/dna-engine@3/dist/dna-engine.min.js"></script>
<h2>Action Icons (up, down, delete)</h2>

<div class=actions>
   <i class="fas fa-arrow-up"   data-on-click=doAction data-action=up></i>
   <i class="fas fa-arrow-down" data-on-click=doAction data-action=down></i>
   <i class="fas fa-times icon-popup-anchor"></i>
   <div>
      <b>Delete?</b>
      <button data-on-click=doAction data-action=delete>Yes</button>
   </div>
</div>

<p>
   Action: <b id=message>No action taken yet</b>
</p>

CSS

body {
   font-family: system-ui, sans-serif;
   color: dimgray;
   background-color: lightblue;
   margin: 30px;
   }
.actions {
   display: inline-block;
   position: relative;
   background-color: goldenrod;
   padding: 10px;
   margin-right: 30px;
   }
.actions i.fas {
   display: block;
   font-size: 1.6rem;
   text-align: center;
   margin: 5px;
   transition: all 400ms;
   }
.actions i.fas:hover {
   color: black;
   }

/* Icon pop-up */
i.fas.icon-popup-anchor + div {
   position: absolute;
   bottom: 15px;
   left: 20px;
   visibility: hidden;
   opacity: 0;
   white-space: nowrap;
   background-color: white;
   border: 3px solid steelblue;
   border-radius: 10px;
   padding: 0.8em 1.6em;
   transition: all 400ms;
   }
i.fas.icon-popup-anchor:hover + div,
i.fas.icon-popup-anchor + div:hover {
   visibility: visible;
   opacity: 1;
   }

JavaScript

// dna-engine.org

const doAction = (elem) => {
   const action =  elem.dataset.action;
   const message = document.getElementById('message');
   dna.ui.pulse(message, { text: action });
   };