diff --git a/the_works/static/the_works.css b/the_works/static/the_works.css index c039c46..0e9ec54 100644 --- a/the_works/static/the_works.css +++ b/the_works/static/the_works.css @@ -115,15 +115,28 @@ summary:empty::before { color: var(--pico-background-color); font-size: .8em; padding: calc(var(--pico-form-element-spacing-vertical) * .5) calc(var(--pico-form-element-spacing-horizontal) * .5); - margin: auto calc(var(--pico-spacing) * .25); + margin: calc(var(--pico-spacing) * .25); cursor: default; + text-wrap: nowrap; + position: relative; } .dropdown-badge-close { cursor: pointer; + font-size: 1.5em; + position: relative; + vertical-align: sub; } form:not([novalidate]) input:user-valid[type="search"] { border-color: inherit; background-image: none; -} \ No newline at end of file +} + +/* style for Klappentext tooltips */ +[data-tooltip][data-placement="bottom"]::after, +[data-tooltip][data-placement="bottom"]::before { + white-space: pre-line; + max-width: 400px; +} + diff --git a/the_works/static/the_works.js b/the_works/static/the_works.js index 191d075..7c7fdf3 100644 --- a/the_works/static/the_works.js +++ b/the_works/static/the_works.js @@ -146,7 +146,7 @@ function updateDropdownSelected(that, summary) { // add closing X to badge let badgeX = document.createElement("span"); badgeX.classList.add("dropdown-badge-close"); - badgeX.innerHTML = "✖"; + badgeX.innerHTML = "×"; badge.appendChild(badgeX); badgeX.addEventListener("click", removeDropdownBadge); } else { @@ -162,3 +162,29 @@ function removeDropdownBadge(event) { this.parentNode.remove(); event.stopPropagation(); } + +// initializes all dropdown selects on the page +function initAllDropdownSelects() { + // initialize each dropdown individually + let dropdowns = document.querySelectorAll("form details.dropdown"); + dropdowns.forEach((d) => initDropdownSelect(d)); + // now it's time to set the z-indices + // get the_works style sheet + let sheet = [...document.styleSheets].filter((s) => s.ownerNode.getAttribute("href").includes("the_works"))[0]; + const initialZ = 20; + // set z-index on dropdowns in reverse order + for ( let i = 0; i < dropdowns.length; i++ ) { + sheet.insertRule(`#${dropdowns[dropdowns.length-i-1].id} { z-index: ${initialZ + i*3};}`, sheet.cssRules.length); + sheet.insertRule(`#${dropdowns[dropdowns.length-i-1].id} .dropdown-badge { z-index: ${initialZ+1+i*3};}`, sheet.cssRules.length); + sheet.insertRule(`#${dropdowns[dropdowns.length-i-1].id} .dropdown-badge-close { z-index: ${initialZ+2+i*3};}`, sheet.cssRules.length); + } + // event handler for summary elements (see below) + function summaryClick(event, that) { + if ( event.target != that && that.contains(event.target) ) { + event.preventDefault(); + } + } + // add event handler to summary elements preventing default behavior (toggling the details element) if the click actually targeted a badge + document.querySelectorAll("form details.dropdown summary").forEach((summary) => summary.addEventListener("click", (event) => summaryClick(event, summary), true)); +} + diff --git a/the_works/templates/views/text_detail.html b/the_works/templates/views/text_detail.html index 82034dc..5cd8de2 100644 --- a/the_works/templates/views/text_detail.html +++ b/the_works/templates/views/text_detail.html @@ -93,6 +93,6 @@ Text bearbeiten {% block script %} {% endblock script %} diff --git a/the_works/templates/views/werk_detail.html b/the_works/templates/views/werk_detail.html index dcfa195..5f76c91 100644 --- a/the_works/templates/views/werk_detail.html +++ b/the_works/templates/views/werk_detail.html @@ -159,9 +159,6 @@ Werk bearbeiten {% block script %} {% endblock script %}