blue-web 1.17.3 → 1.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (()=>{"use strict";window.blueWeb=window.blueWeb||{},window.blueWeb.actions={init:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;function s(){for(const e of t.children)e.style.display="none";for(const e of i.children)e.style.display="",e.classList.add("BLUE-actions-collapse-visible");let s=0;for(const n of t.children){if(n.style.display="",i.children[s].style.display="none",i.children[s].classList.remove("BLUE-actions-collapse-visible"),e.scrollWidth>e.clientWidth){n.style.display="none",i.children[s].style.display="",i.children[s].classList.add("BLUE-actions-collapse-visible");break}s++}}t||(t=e.querySelector(".BLUE-actions-menu")),i||(i=e.querySelector(".BLUE-actions-collapse-menu")),s();const n=()=>{requestAnimationFrame(s)},o=new ResizeObserver(n);o.observe(e);const l=new MutationObserver(n);l.observe(e,{attributes:!1,childList:!0,subtree:!0});const c=t=>{if(!e)return;const i=e.querySelectorAll("details[open]");!i||i.length<=0||i.forEach((e=>{e.contains(t.target)||e.removeAttribute("open")}))};return document.addEventListener("click",c),{updateActions:s,resizeObserver:o,mutationObserver:l,destroy(){o.disconnect(),l.disconnect(),document.removeEventListener("click",c)}}}}})();
1
+ (()=>{"use strict";window.blueWeb=window.blueWeb||{},window.blueWeb.actions={init:function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;const t=e.parentElement||e;function n(){for(const e of s.children)e.style.display="none";for(const e of i.children)e.style.display="",e.classList.add("BLUE-actions-collapse-visible");let e=0;for(const n of s.children){if(n.style.display="",i.children[e].style.display="none",i.children[e].classList.remove("BLUE-actions-collapse-visible"),t.scrollWidth>t.clientWidth){n.style.display="none",i.children[e].style.display="",i.children[e].classList.add("BLUE-actions-collapse-visible");break}e++}}s||(s=e.querySelector(".BLUE-actions-menu")),i||(i=e.querySelector(".BLUE-actions-collapse-menu")),n();const l=()=>{requestAnimationFrame(n)},o=new ResizeObserver(l);o.observe(t);const c=new MutationObserver(l);return c.observe(t,{attributes:!1,childList:!0,subtree:!0}),{updateActions:n,resizeObserver:o,mutationObserver:c,destroy(){o.disconnect(),c.disconnect()}}}}})();
@@ -1,6 +1,7 @@
1
1
  export function init(actionsElement) {
2
2
  let menu = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
3
3
  let collapseMenu = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
4
+ const targetElement = actionsElement.parentElement || actionsElement;
4
5
  if (!menu) menu = actionsElement.querySelector(".BLUE-actions-menu");
5
6
  if (!collapseMenu) collapseMenu = actionsElement.querySelector(".BLUE-actions-collapse-menu");
6
7
  function updateActions() {
@@ -20,7 +21,7 @@ export function init(actionsElement) {
20
21
  item.style.display = "";
21
22
  collapseMenu.children[i].style.display = "none";
22
23
  collapseMenu.children[i].classList.remove("BLUE-actions-collapse-visible");
23
- if (actionsElement.scrollWidth > actionsElement.clientWidth) {
24
+ if (targetElement.scrollWidth > targetElement.clientWidth) {
24
25
  ;
25
26
  item.style.display = "none";
26
27
  collapseMenu.children[i].style.display = "";
@@ -35,24 +36,13 @@ export function init(actionsElement) {
35
36
  requestAnimationFrame(updateActions);
36
37
  };
37
38
  const resizeObserver = new ResizeObserver(callback);
38
- resizeObserver.observe(actionsElement);
39
+ resizeObserver.observe(targetElement);
39
40
  const mutationObserver = new MutationObserver(callback);
40
- mutationObserver.observe(actionsElement, {
41
+ mutationObserver.observe(targetElement, {
41
42
  attributes: false,
42
43
  childList: true,
43
44
  subtree: true
44
45
  });
45
- const outsideClickHandler = event => {
46
- if (!actionsElement) return;
47
- const openDetails = actionsElement.querySelectorAll("details[open]");
48
- if (!openDetails || openDetails.length <= 0) return;
49
- openDetails.forEach(details => {
50
- if (!details.contains(event.target)) {
51
- details.removeAttribute("open");
52
- }
53
- });
54
- };
55
- document.addEventListener("click", outsideClickHandler);
56
46
  return {
57
47
  updateActions,
58
48
  resizeObserver,
@@ -60,7 +50,6 @@ export function init(actionsElement) {
60
50
  destroy() {
61
51
  resizeObserver.disconnect();
62
52
  mutationObserver.disconnect();
63
- document.removeEventListener("click", outsideClickHandler);
64
53
  }
65
54
  };
66
55
  }
package/dist/merged.scss CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Blue Web v1.17.3 (https://bruegmann.github.io/blue-web)
2
+ * Blue Web v1.17.4 (https://bruegmann.github.io/blue-web)
3
3
  * Licensed under GNU General Public License v3.0 (https://github.com/bruegmann/blue-web/blob/master/LICENSE).
4
4
  */
5
5
 
@@ -12063,11 +12063,34 @@ dialog.blue-modal:has(.offcanvas-start) {
12063
12063
  height: 100dvh;
12064
12064
  position: relative;
12065
12065
  display: grid;
12066
- grid-template-columns: 0 var(--toggler-size) calc(var(--side-width) - var(--toggler-size)) auto;
12066
+
12067
12067
  grid-template-rows: var(--toggler-size) auto;
12068
+ grid-template-areas: "header" "main";
12069
+
12070
+ color: var(--blue-sidebar-color);
12071
+ background-color: var(--blue-sidebar-bg);
12072
+
12073
+ &:has(> .blue-layout-toggle) {
12074
+ grid-template-columns: 0 0 var(--toggler-size) calc(var(--side-width) - var(--toggler-size)) 1fr;
12075
+ grid-template-rows: var(--toggler-size) auto;
12076
+ grid-template-areas:
12077
+ "state . toggle header header"
12078
+ ". side main main main";
12079
+ }
12080
+ }
12081
+
12082
+ @media (width >= 64rem) {
12083
+ .blue-layout {
12084
+ &:has(> .blue-layout-state-expand:checked) {
12085
+ grid-template-areas:
12086
+ "state . toggle header header"
12087
+ ". side side side main";
12088
+ }
12089
+ }
12068
12090
  }
12069
12091
 
12070
12092
  .blue-layout-state {
12093
+ grid-area: state;
12071
12094
  position: absolute;
12072
12095
  --size: 0;
12073
12096
  height: var(--size);
@@ -12077,7 +12100,7 @@ dialog.blue-modal:has(.offcanvas-start) {
12077
12100
  }
12078
12101
 
12079
12102
  .blue-layout-toggle {
12080
- grid-column-start: 2;
12103
+ grid-area: toggle;
12081
12104
  color: var(--blue-sidebar-color);
12082
12105
  background-color: var(--blue-sidebar-bg);
12083
12106
  }
@@ -12102,11 +12125,17 @@ dialog.blue-modal:has(.offcanvas-start) {
12102
12125
  }
12103
12126
 
12104
12127
  .blue-layout-header {
12105
- grid-column-start: 3;
12106
- grid-column-end: 5;
12128
+ grid-area: header;
12129
+
12130
+ display: flex;
12131
+ justify-content: space-between;
12132
+ position: relative;
12133
+ z-index: var(--blue-layout-header-z-index, 4);
12134
+ --blue-menu-item-dropdown-bg: var(--blue-sidebar-bg);
12107
12135
  }
12108
12136
 
12109
12137
  .blue-layout-side {
12138
+ grid-area: side;
12110
12139
  overflow: auto;
12111
12140
  }
12112
12141
 
@@ -12128,23 +12157,23 @@ dialog.blue-modal:has(.offcanvas-start) {
12128
12157
  }
12129
12158
  }
12130
12159
 
12131
- @media (width >= 64rem) {
12132
- .blue-layout-state-expand:checked ~ .blue-layout-side {
12133
- grid-column-start: 2;
12134
- grid-column-end: 4;
12135
- }
12136
- }
12137
-
12138
12160
  .blue-layout-main {
12139
12161
  overflow: auto;
12140
- grid-column-start: 2;
12141
- grid-column-end: 5;
12162
+ grid-area: main;
12163
+ // grid-column-start: 2;
12142
12164
  }
12143
12165
 
12144
- @media (width >= 64rem) {
12145
- .blue-layout-state-expand:checked ~ .blue-layout-main {
12146
- grid-column-start: 4;
12147
- }
12166
+ .blue-layout-body {
12167
+ --spacing: 0.25rem;
12168
+ width: calc(100% - var(--spacing) * 2);
12169
+ height: calc(100% - var(--spacing));
12170
+ margin-left: auto;
12171
+ margin-right: auto;
12172
+ overflow: auto;
12173
+ background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity, 1));
12174
+ box-shadow: var(--bs-box-shadow-sm);
12175
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
12176
+ border-radius: var(--bs-border-radius-lg);
12148
12177
  }
12149
12178
 
12150
12179
  .blue-layout-overlay {
@@ -12231,6 +12260,8 @@ dialog.blue-modal:has(.offcanvas-start) {
12231
12260
  .BLUE-actions {
12232
12261
  display: flex;
12233
12262
  white-space: nowrap;
12263
+ // overflow-x: auto;
12264
+ // overflow-y: visible;
12234
12265
  }
12235
12266
 
12236
12267
  .BLUE-actions-menu {
@@ -12254,6 +12285,16 @@ dialog.blue-modal:has(.offcanvas-start) {
12254
12285
  display: var(--display);
12255
12286
  }
12256
12287
 
12288
+ // Compatibility with MenuItems having dropdowns
12289
+ .BLUE-actions-menu > .blue-menu-item-wrapper:has(> .blue-menu-item-dropdown) {
12290
+ display: block;
12291
+ position: relative;
12292
+ }
12293
+
12294
+ .BLUE-actions-menu > .blue-menu-item-wrapper > .blue-menu-item-dropdown {
12295
+ position: absolute;
12296
+ }
12297
+
12257
12298
  .blue-anchor {
12258
12299
  anchor-name: var(--blue-anchor-name, --anchor-1);
12259
12300
  }