@brightspace-ui/core 3.65.0 → 3.66.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,7 @@ import { css, html, LitElement } from 'lit';
2
2
 
3
3
  /**
4
4
  * A button container component for button toggles.
5
+ * @fires click - Internal event
5
6
  */
6
7
  class ButtonToggle extends LitElement {
7
8
 
@@ -78,17 +79,28 @@ class ButtonToggle extends LitElement {
78
79
  elem.focus();
79
80
  }
80
81
 
82
+ _clickCancelled(e) {
83
+ e.stopPropagation();
84
+ const customClick = new CustomEvent('click', {
85
+ cancelable: true
86
+ });
87
+ e.target.dispatchEvent(customClick);
88
+ return customClick.defaultPrevented;
89
+ }
90
+
81
91
  async _handleClick(pressed) {
82
92
  this.pressed = pressed;
83
93
  await this.updateComplete;
84
94
  this.focus();
85
95
  }
86
96
 
87
- _handleNotPressedClick() {
97
+ _handleNotPressedClick(e) {
98
+ if (this._clickCancelled(e)) return;
88
99
  this._handleClick(true);
89
100
  }
90
101
 
91
- _handlePressedClick() {
102
+ _handlePressedClick(e) {
103
+ if (this._clickCancelled(e)) return;
92
104
  this._handleClick(false);
93
105
  }
94
106
 
@@ -54,6 +54,30 @@
54
54
  </template>
55
55
  </d2l-demo-snippet>
56
56
 
57
+ <h2>Toggle Button (consumer manages state)</h2>
58
+
59
+ <d2l-demo-snippet>
60
+ <template>
61
+ <d2l-button-toggle id="toggle-button-icon-consumer-manage-state">
62
+ <d2l-button-icon slot="not-pressed" icon="tier1:pin-hollow" text="Unpinned, click to pin." id="button-icon-not-pressed"></d2l-button-icon>
63
+ <d2l-button-icon slot="pressed" icon="tier1:pin-filled" text="Pinned, click to unpin." id="button-icon-pressed"></d2l-button-icon>
64
+ </d2l-button-toggle>
65
+ <script>
66
+ const buttonToggle = document.querySelector('#toggle-button-icon-consumer-manage-state');
67
+ buttonToggle.addEventListener('d2l-button-toggle-change', e => console.log(e));
68
+
69
+ document.querySelector('#button-icon-not-pressed').addEventListener('click', (e) => {
70
+ e.preventDefault();
71
+ buttonToggle.pressed = true;
72
+ });
73
+ document.querySelector('#button-icon-pressed').addEventListener('click', (e) => {
74
+ e.preventDefault();
75
+ buttonToggle.pressed = false;
76
+ });
77
+ </script>
78
+ </template>
79
+ </d2l-demo-snippet>
80
+
57
81
  </d2l-demo-page>
58
82
 
59
83
  </body>
@@ -739,6 +739,10 @@
739
739
  }
740
740
  ],
741
741
  "events": [
742
+ {
743
+ "name": "click",
744
+ "description": "Internal event"
745
+ },
742
746
  {
743
747
  "name": "d2l-button-toggle-change",
744
748
  "description": "Dispatched when the pressed state changes"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspace-ui/core",
3
- "version": "3.65.0",
3
+ "version": "3.66.0",
4
4
  "description": "A collection of accessible, free, open-source web components for building Brightspace applications",
5
5
  "type": "module",
6
6
  "repository": "https://github.com/BrightspaceUI/core.git",