studio-engine 0.76.0 → 0.76.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07421317c32cb9dd4b3bb4c4db45f3877996d67304d6162f38a7ba9e93e59ff0
4
- data.tar.gz: 2a913fa2583f81c901cca276050dffe751f70ddbdd856c6abf4b2270167e1f9a
3
+ metadata.gz: 9898d95f3e063d74ac32653ac8bfdcd9df98553dfd7e068f491c442a9cd59590
4
+ data.tar.gz: 0a27da01e654e2fbce90049f1d50fba76450d3d4ca634fa708f36fbcf63e5532
5
5
  SHA512:
6
- metadata.gz: 5ed8a3771ddd488e56740a892d6b0b01f1b2e899e7916718975a45f1793b157984df97ee1645d179624ee3c0766126ed9db7e47366a250d159c1aed7196e4df6
7
- data.tar.gz: 8ab8227c9695fdc3f1efc446151af57b32c19a88f915556268426e99027b2accf08496c408d73d0b82b201c3ba2b312905fd33b2fe11b5396705d6fc702ac398
6
+ metadata.gz: 8610ebf83d8a5cacf20df1260579e84bf9d3bd340e4706f8e29e3f429cc2f39639134e9af5393481cf8bf349f9ea00f86d07a3959457a94c58f89baad29921ea
7
+ data.tar.gz: ca1b6a2e1f8eca18efa637a4896fee8d2b4f72863f31effa964c96c20ca85356d2946cf2cf9d72bf000b2f24444abd85b924b855cd39c6897168b9e9ccf5db07
data/CHANGELOG.md CHANGED
@@ -4,6 +4,23 @@ The format is [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This pro
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.76.1 — 2026-09-19
8
+
9
+ ### Fixed
10
+
11
+ - **A host's own sidebar panel can be closed again.** `components/_sidebar_panel`
12
+ is shared, and it stamps `data-link-sidebar-close` on every panel's close
13
+ button; `components/_link_sidebar`'s click bridge claimed that attribute
14
+ anywhere on the page, in the capture phase, with `stopImmediatePropagation`.
15
+ So on any panel other than the link sidebar the × never reached its own
16
+ handler: the button did nothing, silently, and the link sidebar closed
17
+ instead. The bridge is now scoped to the two panels it renders
18
+ (`#studio-link-sidebar`, `#studio-link-sidebar-mobile`); its own close button,
19
+ trigger and outside-click are unchanged. Consumers that worked around this with
20
+ a close button of their own can drop it. Held by
21
+ `e2e/sidebar_panel_close.spec.js` (a host panel beside the link sidebar) and
22
+ `test/views/link_sidebar_test.rb`.
23
+
7
24
  ## 0.76.0 — 2026-09-17
8
25
 
9
26
  ## 0.75.0 — 2026-09-17
@@ -28,6 +28,10 @@
28
28
  // page is closed. The document-level capture handlers make the trigger
29
29
  // work even for clicks that land before Alpine initializes.
30
30
  (function () {
31
+ // The panels this component renders — the scope for every handler below that
32
+ // claims a click. Declared once so the selector cannot drift from the ids.
33
+ var LINK_SIDEBAR_PANELS = '#studio-link-sidebar, #studio-link-sidebar-mobile';
34
+
31
35
  function ensureLinkSidebarStore() {
32
36
  if (!window.Alpine) return null;
33
37
 
@@ -54,8 +58,18 @@
54
58
  }
55
59
 
56
60
  function handleLinkSidebarClick(event) {
61
+ // SCOPED TO THIS COMPONENT'S OWN PANELS, and that scope is the whole of it.
62
+ // components/_sidebar_panel is SHARED: every panel built on it stamps its close
63
+ // button data-link-sidebar-close, so an unscoped match here claimed the close
64
+ // click of EVERY other panel on the page — stopImmediatePropagation in the
65
+ // capture phase, before that panel's own @click could run — and closed this
66
+ // sidebar instead. The other panel's × then did nothing at all: no error, no
67
+ // console line. Measured 2026-09-18 on the hub's /deployments summary sidebars,
68
+ // where the click never reached a document-level listener and the panel stayed
69
+ // open (mcritchie-studio worked around it with a close button of its own).
70
+ // The two ids are the panels this file renders, below.
57
71
  var closeTrigger = event.target.closest('[data-link-sidebar-close]');
58
- if (closeTrigger) {
72
+ if (closeTrigger && closeTrigger.closest(LINK_SIDEBAR_PANELS)) {
59
73
  event.preventDefault();
60
74
  event.stopPropagation();
61
75
  event.stopImmediatePropagation();
@@ -77,7 +91,7 @@
77
91
 
78
92
  var sidebars = ensureLinkSidebarStore();
79
93
  if (!sidebars || !sidebars.linkTreeOpen) return;
80
- if (event.target.closest('#studio-link-sidebar, #studio-link-sidebar-mobile')) return;
94
+ if (event.target.closest(LINK_SIDEBAR_PANELS)) return;
81
95
 
82
96
  closeLinkSidebar();
83
97
  }
@@ -1,3 +1,3 @@
1
1
  module Studio
2
- VERSION = "0.76.0"
2
+ VERSION = "0.76.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: studio-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.76.0
4
+ version: 0.76.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex McRitchie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-17 00:00:00.000000000 Z
11
+ date: 2026-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails