blue-web 1.17.2 → 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.2 (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
 
@@ -209,7 +209,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
209
209
 
210
210
  @each $color in $foregrounds {
211
211
  $contrast-ratio: contrast-ratio($background, $color);
212
- @if $contrast-ratio > $min-contrast-ratio {
212
+ @if $contrast-ratio >= $min-contrast-ratio {
213
213
  @return $color;
214
214
  } @else if $contrast-ratio > $max-ratio {
215
215
  $max-ratio: $contrast-ratio;
@@ -4173,7 +4173,7 @@ $sidebar-expanded-breakpoint: 1400px !default;
4173
4173
 
4174
4174
  @mixin bsBanner($file) {
4175
4175
  /*!
4176
- * Bootstrap #{$file} v5.3.7 (https://getbootstrap.com/)
4176
+ * Bootstrap #{$file} v5.3.8 (https://getbootstrap.com/)
4177
4177
  * Copyright 2011-2025 The Bootstrap Authors
4178
4178
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4179
4179
  */
@@ -5895,6 +5895,12 @@ legend {
5895
5895
  [type="search"] {
5896
5896
  -webkit-appearance: textfield; // 1
5897
5897
  outline-offset: -2px; // 2
5898
+
5899
+ // 3. Better affordance and consistent appearance for search cancel button
5900
+ &::-webkit-search-cancel-button {
5901
+ cursor: pointer;
5902
+ filter: grayscale(1);
5903
+ }
5898
5904
  }
5899
5905
 
5900
5906
  // 1. A few input types should stay LTR
@@ -10233,6 +10239,7 @@ textarea {
10233
10239
  .spinner-grow,
10234
10240
  .spinner-border {
10235
10241
  display: inline-block;
10242
+ flex-shrink: 0;
10236
10243
  width: var(--#{$prefix}spinner-width);
10237
10244
  height: var(--#{$prefix}spinner-height);
10238
10245
  vertical-align: var(--#{$prefix}spinner-vertical-align);
@@ -11104,7 +11111,7 @@ body {
11104
11111
  &:focus-visible {
11105
11112
  &,
11106
11113
  &.active {
11107
- box-shadow: inset 0 0 0.25rem;
11114
+ box-shadow: inset 0 0 0 0.25rem color-mix(in srgb, currentColor 15%, transparent);
11108
11115
  }
11109
11116
  }
11110
11117
  }
@@ -11848,7 +11855,7 @@ body {
11848
11855
  .nav-link.active,
11849
11856
  .show > .nav-link {
11850
11857
  font-weight: var(--blue-tabs-underline-active-font-weight, $font-weight-semibold);
11851
- border-bottom-color: var(--blue-tabs-underline-active-border-bottom-color, $primary);
11858
+ border-bottom-color: var(--blue-tabs-underline-active-border-bottom-color, var(--bs-primary));
11852
11859
  }
11853
11860
  }
11854
11861
 
@@ -11908,7 +11915,7 @@ input.blue-tab:checked + .blue-tab-content {
11908
11915
  .blue-tab:checked {
11909
11916
  font-weight: var(--blue-tabs-underline-active-font-weight, $font-weight-semibold);
11910
11917
  color: var(--bs-nav-underline-link-active-color);
11911
- border-bottom-color: var(--blue-tabs-underline-active-border-bottom-color, $primary);
11918
+ border-bottom-color: var(--blue-tabs-underline-active-border-bottom-color, var(--bs-primary));
11912
11919
  }
11913
11920
  }
11914
11921
 
@@ -12056,11 +12063,34 @@ dialog.blue-modal:has(.offcanvas-start) {
12056
12063
  height: 100dvh;
12057
12064
  position: relative;
12058
12065
  display: grid;
12059
- grid-template-columns: 0 var(--toggler-size) calc(var(--side-width) - var(--toggler-size)) auto;
12066
+
12060
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
+ }
12061
12090
  }
12062
12091
 
12063
12092
  .blue-layout-state {
12093
+ grid-area: state;
12064
12094
  position: absolute;
12065
12095
  --size: 0;
12066
12096
  height: var(--size);
@@ -12070,7 +12100,7 @@ dialog.blue-modal:has(.offcanvas-start) {
12070
12100
  }
12071
12101
 
12072
12102
  .blue-layout-toggle {
12073
- grid-column-start: 2;
12103
+ grid-area: toggle;
12074
12104
  color: var(--blue-sidebar-color);
12075
12105
  background-color: var(--blue-sidebar-bg);
12076
12106
  }
@@ -12095,11 +12125,17 @@ dialog.blue-modal:has(.offcanvas-start) {
12095
12125
  }
12096
12126
 
12097
12127
  .blue-layout-header {
12098
- grid-column-start: 3;
12099
- 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);
12100
12135
  }
12101
12136
 
12102
12137
  .blue-layout-side {
12138
+ grid-area: side;
12103
12139
  overflow: auto;
12104
12140
  }
12105
12141
 
@@ -12121,23 +12157,23 @@ dialog.blue-modal:has(.offcanvas-start) {
12121
12157
  }
12122
12158
  }
12123
12159
 
12124
- @media (width >= 64rem) {
12125
- .blue-layout-state-expand:checked ~ .blue-layout-side {
12126
- grid-column-start: 2;
12127
- grid-column-end: 4;
12128
- }
12129
- }
12130
-
12131
12160
  .blue-layout-main {
12132
12161
  overflow: auto;
12133
- grid-column-start: 2;
12134
- grid-column-end: 5;
12162
+ grid-area: main;
12163
+ // grid-column-start: 2;
12135
12164
  }
12136
12165
 
12137
- @media (width >= 64rem) {
12138
- .blue-layout-state-expand:checked ~ .blue-layout-main {
12139
- grid-column-start: 4;
12140
- }
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);
12141
12177
  }
12142
12178
 
12143
12179
  .blue-layout-overlay {
@@ -12224,6 +12260,8 @@ dialog.blue-modal:has(.offcanvas-start) {
12224
12260
  .BLUE-actions {
12225
12261
  display: flex;
12226
12262
  white-space: nowrap;
12263
+ // overflow-x: auto;
12264
+ // overflow-y: visible;
12227
12265
  }
12228
12266
 
12229
12267
  .BLUE-actions-menu {
@@ -12247,6 +12285,16 @@ dialog.blue-modal:has(.offcanvas-start) {
12247
12285
  display: var(--display);
12248
12286
  }
12249
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
+
12250
12298
  .blue-anchor {
12251
12299
  anchor-name: var(--blue-anchor-name, --anchor-1);
12252
12300
  }