diff --git a/dev/vscode-collapsible/actions-stop-propagation.html b/dev/vscode-collapsible/actions-stop-propagation.html
new file mode 100644
index 000000000..7d7525d67
--- /dev/null
+++ b/dev/vscode-collapsible/actions-stop-propagation.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+ VSCode Elements
+
+
+
+
+
+
+
+ Component demo
+
+
+
+
+
+ Lorem ipsum
+ Lorem ipsum
+ Lorem ipsum
+ Lorem ipsum
+ Lorem ipsum
+
+
+
+
+
+
diff --git a/src/vscode-collapsible/vscode-collapsible.test.ts b/src/vscode-collapsible/vscode-collapsible.test.ts
index fb7679ef2..f99e4f47f 100644
--- a/src/vscode-collapsible/vscode-collapsible.test.ts
+++ b/src/vscode-collapsible/vscode-collapsible.test.ts
@@ -1,4 +1,7 @@
+/* eslint-disable @typescript-eslint/no-unused-expressions */
+import {$, clickOnElement} from '../includes/test-helpers.js';
import {VscodeCollapsible} from './index.js';
+import '../vscode-icon/index.js';
import {expect, fixture, html} from '@open-wc/testing';
describe('vscode-collapsible', () => {
@@ -104,4 +107,17 @@ describe('vscode-collapsible', () => {
expect(detail).to.deep.equal({open: true});
});
+
+ it('prevents collapse on action icon click', async () => {
+ const el = await fixture(html`
+
+
+ `);
+
+ const actionIcon = $('#action-icon');
+ await clickOnElement(actionIcon);
+
+ expect(el.open).to.be.true;
+ });
});
diff --git a/src/vscode-collapsible/vscode-collapsible.ts b/src/vscode-collapsible/vscode-collapsible.ts
index 3363f2ce3..64095ee57 100644
--- a/src/vscode-collapsible/vscode-collapsible.ts
+++ b/src/vscode-collapsible/vscode-collapsible.ts
@@ -84,6 +84,10 @@ export class VscodeCollapsible extends VscElement {
}
}
+ private _onActionClick(event: PointerEvent) {
+ event.stopPropagation();
+ }
+
override render(): TemplateResult {
const classes = {collapsible: true, open: this.open};
const actionsClasses = {
@@ -123,7 +127,7 @@ export class VscodeCollapsible extends VscElement {
${heading}${descriptionMarkup}