Skip to content

Commit fe8230b

Browse files
author
Ryan A. Johnson
committed
feat(HXDisclosureElement): add declarative functionality
* Rename private `_toggle()` to public `click()` * Refactor source code to use `$` API from HXElement * Update internal method names to closer adhere to best practices
1 parent 0b8c431 commit fe8230b

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

docs/elements/hx-disclosure/index.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ <h2 id="target-element">Target Element</h2>
4141
</li>
4242
</ol>
4343
</section>
44+
45+
<section>
46+
<h2 id="methods">Methods</h2>
47+
<dl>
48+
<dt>click()</dt>
49+
<dd>Simulates a mouse click on the element</dd>
50+
</dl>
51+
</section>
4452
{% endblock %}
4553

4654
{% block attributes %}

src/helix-ui/elements/HXDisclosureElement.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ export class HXDisclosureElement extends HXElement {
3333
this.expanded = false;
3434
}
3535

36-
this.addEventListener('click', this._toggle);
36+
this.addEventListener('click', this._onClick);
3737
this.addEventListener('keydown', this.$preventScroll);
38-
this.addEventListener('keyup', this._keyUp);
38+
this.addEventListener('keyup', this._onKeyUp);
3939
}
4040

4141
$onDisconnect () {
42-
this.removeEventListener('click', this._toggle);
42+
this.removeEventListener('click', this._onClick);
4343
this.removeEventListener('keydown', this.$preventScroll);
44-
this.removeEventListener('keyup', this._keyUp);
44+
this.removeEventListener('keyup', this._onKeyUp);
4545

4646
if (this.target) {
4747
this.target.removeEventListener('open', this._onTargetOpen);
@@ -87,25 +87,27 @@ export class HXDisclosureElement extends HXElement {
8787
return this._target;
8888
}
8989

90+
/**
91+
* Simulates mouse click
92+
*/
93+
click () {
94+
if (!this.disabled) {
95+
this.expanded = !this.expanded;
96+
}
97+
}
98+
9099
/** @private */
91-
_keyUp (event) {
100+
_onKeyUp (event) {
92101
switch (event.keyCode) {
93102
case KEYS.Space:
94103
case KEYS.Enter:
95-
this._toggle();
104+
this.click();
96105
break;
97106
default:
98107
break;
99108
}
100109
}
101110

102-
/** @private */
103-
_toggle () {
104-
if (!this.disabled) {
105-
this.expanded = !this.expanded;
106-
}
107-
}
108-
109111
/** @private */
110112
_onTargetOpen () {
111113
this.expanded = true;
@@ -115,4 +117,9 @@ export class HXDisclosureElement extends HXElement {
115117
_onTargetClose () {
116118
this.expanded = false;
117119
}
120+
121+
/** @private */
122+
_onClick () {
123+
this.click();
124+
}
118125
}

0 commit comments

Comments
 (0)