blue-web 1.17.3 → 1.17.5

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.5 (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
 
@@ -3709,8 +3709,8 @@ $sidebar-color: color-contrast($sidebar-bg, $gray-900) !default;
3709
3709
  $sidebar-color-dark: color-contrast($sidebar-bg-dark, $gray-900) !default;
3710
3710
 
3711
3711
  // Color of indicator for active sidebar item.
3712
- $sidebar-indicator-color: $sidebar-color !default;
3713
- $sidebar-indicator-color-dark: $sidebar-color-dark !default;
3712
+ $sidebar-indicator-color: #{var(--bs-primary)} !default;
3713
+ $sidebar-indicator-color-dark: #{var(--bs-primary-text-emphasis)} !default;
3714
3714
 
3715
3715
  // Background of search control in sidebar.
3716
3716
  $sidebar-search-bg: $input-bg !default;
@@ -11852,14 +11852,27 @@ body {
11852
11852
  --#{$prefix}nav-link-color: var(--#{$prefix}list-group-action-color);
11853
11853
  }
11854
11854
 
11855
+ .nav-link:hover,
11856
+ .nav-link:focus {
11857
+ border-bottom-color: transparent;
11858
+ }
11859
+
11855
11860
  .nav-link.active,
11856
- .show > .nav-link {
11857
- font-weight: var(--blue-tabs-underline-active-font-weight, $font-weight-semibold);
11858
- border-bottom-color: var(--blue-tabs-underline-active-border-bottom-color, var(--bs-primary));
11861
+ .show > .nav-link,
11862
+ .blue-tab:checked {
11863
+ &::after {
11864
+ @include blue-menu-item-indicator();
11865
+ @include blue-menu-item-indicator-horizontal();
11866
+ }
11867
+
11868
+ position: relative;
11869
+ font-weight: var(--blue-tabs-underline-active-font-weight, $font-weight-base);
11870
+ border-bottom-color: transparent;
11871
+ color: var(--bs-nav-underline-link-active-color);
11859
11872
  }
11860
11873
  }
11861
11874
 
11862
- .blue-tabs {
11875
+ .nav-underline .blue-tabs {
11863
11876
  display: flex;
11864
11877
  flex-wrap: wrap;
11865
11878
  flex-direction: row;
@@ -11912,11 +11925,6 @@ input.blue-tab:checked + .blue-tab-content {
11912
11925
 
11913
11926
  .blue-tabs.nav-underline {
11914
11927
  row-gap: 0;
11915
- .blue-tab:checked {
11916
- font-weight: var(--blue-tabs-underline-active-font-weight, $font-weight-semibold);
11917
- color: var(--bs-nav-underline-link-active-color);
11918
- border-bottom-color: var(--blue-tabs-underline-active-border-bottom-color, var(--bs-primary));
11919
- }
11920
11928
  }
11921
11929
 
11922
11930
  /**
@@ -12063,11 +12071,34 @@ dialog.blue-modal:has(.offcanvas-start) {
12063
12071
  height: 100dvh;
12064
12072
  position: relative;
12065
12073
  display: grid;
12066
- grid-template-columns: 0 var(--toggler-size) calc(var(--side-width) - var(--toggler-size)) auto;
12074
+
12067
12075
  grid-template-rows: var(--toggler-size) auto;
12076
+ grid-template-areas: "header" "main";
12077
+
12078
+ color: var(--blue-sidebar-color);
12079
+ background-color: var(--blue-sidebar-bg);
12080
+
12081
+ &:has(> .blue-layout-toggle) {
12082
+ grid-template-columns: 0 0 var(--toggler-size) calc(var(--side-width) - var(--toggler-size)) 1fr;
12083
+ grid-template-rows: var(--toggler-size) auto;
12084
+ grid-template-areas:
12085
+ "state . toggle header header"
12086
+ ". side main main main";
12087
+ }
12088
+ }
12089
+
12090
+ @media (width >= 64rem) {
12091
+ .blue-layout {
12092
+ &:has(> .blue-layout-state-expand:checked) {
12093
+ grid-template-areas:
12094
+ "state . toggle header header"
12095
+ ". side side side main";
12096
+ }
12097
+ }
12068
12098
  }
12069
12099
 
12070
12100
  .blue-layout-state {
12101
+ grid-area: state;
12071
12102
  position: absolute;
12072
12103
  --size: 0;
12073
12104
  height: var(--size);
@@ -12077,7 +12108,7 @@ dialog.blue-modal:has(.offcanvas-start) {
12077
12108
  }
12078
12109
 
12079
12110
  .blue-layout-toggle {
12080
- grid-column-start: 2;
12111
+ grid-area: toggle;
12081
12112
  color: var(--blue-sidebar-color);
12082
12113
  background-color: var(--blue-sidebar-bg);
12083
12114
  }
@@ -12102,11 +12133,17 @@ dialog.blue-modal:has(.offcanvas-start) {
12102
12133
  }
12103
12134
 
12104
12135
  .blue-layout-header {
12105
- grid-column-start: 3;
12106
- grid-column-end: 5;
12136
+ grid-area: header;
12137
+
12138
+ display: flex;
12139
+ justify-content: space-between;
12140
+ position: relative;
12141
+ z-index: var(--blue-layout-header-z-index, 4);
12142
+ --blue-menu-item-dropdown-bg: var(--blue-sidebar-bg);
12107
12143
  }
12108
12144
 
12109
12145
  .blue-layout-side {
12146
+ grid-area: side;
12110
12147
  overflow: auto;
12111
12148
  }
12112
12149
 
@@ -12128,23 +12165,23 @@ dialog.blue-modal:has(.offcanvas-start) {
12128
12165
  }
12129
12166
  }
12130
12167
 
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
12168
  .blue-layout-main {
12139
12169
  overflow: auto;
12140
- grid-column-start: 2;
12141
- grid-column-end: 5;
12170
+ grid-area: main;
12171
+ // grid-column-start: 2;
12142
12172
  }
12143
12173
 
12144
- @media (width >= 64rem) {
12145
- .blue-layout-state-expand:checked ~ .blue-layout-main {
12146
- grid-column-start: 4;
12147
- }
12174
+ .blue-layout-body {
12175
+ --spacing: 0.25rem;
12176
+ width: calc(100% - var(--spacing) * 2);
12177
+ height: calc(100% - var(--spacing));
12178
+ margin-left: auto;
12179
+ margin-right: auto;
12180
+ overflow: auto;
12181
+ background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity, 1));
12182
+ box-shadow: var(--bs-box-shadow-sm);
12183
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color);
12184
+ border-radius: var(--bs-border-radius-lg);
12148
12185
  }
12149
12186
 
12150
12187
  .blue-layout-overlay {
@@ -12231,6 +12268,8 @@ dialog.blue-modal:has(.offcanvas-start) {
12231
12268
  .BLUE-actions {
12232
12269
  display: flex;
12233
12270
  white-space: nowrap;
12271
+ // overflow-x: auto;
12272
+ // overflow-y: visible;
12234
12273
  }
12235
12274
 
12236
12275
  .BLUE-actions-menu {
@@ -12254,6 +12293,16 @@ dialog.blue-modal:has(.offcanvas-start) {
12254
12293
  display: var(--display);
12255
12294
  }
12256
12295
 
12296
+ // Compatibility with MenuItems having dropdowns
12297
+ .BLUE-actions-menu > .blue-menu-item-wrapper:has(> .blue-menu-item-dropdown) {
12298
+ display: block;
12299
+ position: relative;
12300
+ }
12301
+
12302
+ .BLUE-actions-menu > .blue-menu-item-wrapper > .blue-menu-item-dropdown {
12303
+ position: absolute;
12304
+ }
12305
+
12257
12306
  .blue-anchor {
12258
12307
  anchor-name: var(--blue-anchor-name, --anchor-1);
12259
12308
  }