Skip to content

Commit 405dceb

Browse files
author
Ryan A. Johnson
committed
chore(comments): update annotations for dev reference
1 parent 0addea3 commit 405dceb

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

src/helix-ui/elements/HXAccordionElement.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,17 @@ export class HXAccordionElement extends HXElement {
2727
this._onPanelOpen = this._onPanelOpen.bind(this);
2828
}
2929

30+
// FIXME: defer $onConnect until children finished connecting
3031
$onConnect () {
3132
this.$upgradeProperty('currentPanel');
32-
// FIXME: panels are not connected at this point
3333
this.panels.forEach(panel => {
3434
panel.addEventListener('open', this._onPanelOpen);
3535
});
3636

37-
// FIXME: initialize on connect
37+
// FIXME: if current-panel set, ensure the associated panel is open
3838
}
3939

4040
$onDisconnect () {
41-
// FIXME: panels may not be present on disconnect
42-
// (react disconnects children before the parent)
4341
this.panels.forEach(panel => {
4442
panel.removeEventListener('open', this._onPanelOpen);
4543
});
@@ -52,7 +50,6 @@ export class HXAccordionElement extends HXElement {
5250
$onAttributeChange (attr, oldVal, newVal) {
5351
if (attr === 'current-panel') {
5452
if (newVal !== null) {
55-
// FIXME: this may not initialize correctly if called while disconnected
5653
this._openPanel(Number(newVal));
5754
this.$emit('panelchange');
5855
}
@@ -70,6 +67,7 @@ export class HXAccordionElement extends HXElement {
7067
* not just the immediate children.
7168
*/
7269
get panels () {
70+
// (VERIFY) FIXME: return [] if not connected
7371
return Array.from(this.querySelectorAll('hx-accordion-panel'));
7472
}
7573

@@ -125,13 +123,13 @@ export class HXAccordionElement extends HXElement {
125123

126124
/** @private */
127125
_onPanelOpen (evt) {
126+
// FIXME: idx could be -1 if _onPanelOpen() called before connect
128127
let idx = this.panels.indexOf(evt.target);
129128
if (this._isNavigable) {
130129
this.currentPanel = idx;
131130
}
132131
}
133132

134-
// FIXME: only works correctly if connected to DOM
135133
/** @private */
136134
_openPanel (index) {
137135
if (this._isNavigable) {
@@ -147,6 +145,7 @@ export class HXAccordionElement extends HXElement {
147145
}
148146
}
149147

148+
// FIXME: remove for v0.15
150149
/**
151150
* @deprecated Use {@link HXAccordionElement#selectNext|selectNext()}
152151
*/
@@ -155,6 +154,7 @@ export class HXAccordionElement extends HXElement {
155154
this.selectNext();
156155
}
157156

157+
// FIXME: remove for v0.15
158158
/**
159159
* @deprecated Use {@link HXAccordionElement#selectPrevious|selectPrevious()}
160160
*/

src/helix-ui/elements/HXTabsetElement.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,18 @@ export class HXTabsetElement extends HXElement {
3636
this.$defaultAttribute('id', `tabset-${generateId()}`);
3737
this._setupIds();
3838
this.currentTab = Number(this.getAttribute('current-tab')) || 0;
39+
// FIXME: convert this.$tablist to private getter as this._tablist
3940
this.$tablist = this.querySelector('hx-tablist');
4041
this.$tablist.addEventListener('keyup', this._onKeyUp);
4142
this.$tablist.addEventListener('keydown', preventKeyScroll);
4243
this.tabs.forEach(tab => {
4344
tab.addEventListener('click', this._onTabClick);
4445
});
46+
47+
// FIXME: if current-tab set, ensure the associated tab and tabpanel is open
4548
}
4649

4750
$onDisconnect () {
48-
// FIXME: convert this.$tablist to getter
4951
this.$tablist.removeEventListener('keyup', this._onKeyUp);
5052
this.$tablist.removeEventListener('keydown', preventKeyScroll);
5153
this.tabs.forEach(tab => {
@@ -59,7 +61,6 @@ export class HXTabsetElement extends HXElement {
5961

6062
$onAttributeChange (attr, oldVal, newVal) {
6163
if (attr === 'current-tab') {
62-
// FIXME: only run if connected
6364
if (!isNaN(newVal)) {
6465
this._activateTab(Number(newVal));
6566
this.$emit('tabchange');
@@ -75,6 +76,10 @@ export class HXTabsetElement extends HXElement {
7576
return Number(this.getAttribute('current-tab') || 0);
7677
}
7778
set currentTab (idx) {
79+
// NOTE: Keep an eye on this logic for React compatibility
80+
// React _may_ set the currentTab property before connect
81+
// if so, we'll need to check if isConnected before continuing
82+
7883
if (isNaN(idx)) {
7984
throw new TypeError(`'currentTab' expects an numeric index. Got ${typeof idx} instead.`);
8085
}
@@ -108,6 +113,9 @@ export class HXTabsetElement extends HXElement {
108113
* Select next tab in tabset.
109114
*/
110115
selectNext () {
116+
// FIXME: this.tabs might return an empty array
117+
// maybe short-circuit if not connected
118+
111119
// if current tab is the last tab
112120
if (this.currentTab === (this.tabs.length - 1)) {
113121
// select first
@@ -116,14 +124,16 @@ export class HXTabsetElement extends HXElement {
116124
// select next
117125
this.currentTab += 1;
118126
}
119-
// FIXME: this.tabs might return an empty array
120127
this.tabs[this.currentTab].focus();
121128
}
122129

123130
/**
124131
* Select previous tab in tabset.
125132
*/
126133
selectPrevious () {
134+
// FIXME: this.tabs might return an empty array
135+
// maybe short-circuit if not connected
136+
127137
// if current tab is the first tab
128138
if (this.currentTab === 0) {
129139
// select last
@@ -132,13 +142,13 @@ export class HXTabsetElement extends HXElement {
132142
// select previous
133143
this.currentTab -= 1;
134144
}
135-
// FIXME: this.tabs might return an empty array
136145
this.tabs[this.currentTab].focus();
137146
}
138147

139148
/**
140149
* Handle navigating the tabs via arrow keys
141150
* @private
151+
* @todo migrate keyup listener logic to HXTablistElement
142152
*/
143153
_onKeyUp (evt) {
144154
if (evt.keyCode === KEYS.Right) {
@@ -150,14 +160,16 @@ export class HXTabsetElement extends HXElement {
150160
}
151161
}
152162

153-
/** @private */
163+
/**
164+
* @private
165+
* @todo migrate tab click listener logic to HXTabElement
166+
*/
154167
_onTabClick (evt) {
155168
this.currentTab = this.tabs.indexOf(evt.target);
156169
}
157170

158171
/** @private */
159172
_activateTab (idx) {
160-
// FIXME: this.tabs will return empty array before tabset connects
161173
this.tabs.forEach((tab, tabIdx) => {
162174
if (idx === tabIdx) {
163175
tab.current = true;
@@ -169,7 +181,6 @@ export class HXTabsetElement extends HXElement {
169181
}
170182
});
171183

172-
// FIXME: this.tabpanels will return empty array before tabset connects
173184
this.tabpanels.forEach((tabpanel, panelIdx) => {
174185
tabpanel.open = (idx === panelIdx);
175186
});
@@ -178,7 +189,6 @@ export class HXTabsetElement extends HXElement {
178189
/** @private */
179190
_setupIds () {
180191
let tabsetId = this.getAttribute('id');
181-
// FIXME: this.tabs will return empty array before connect
182192
this.tabs.forEach((tab, idx) => {
183193
let tabpanel = this.tabpanels[idx];
184194
// Default tab and panel ID

0 commit comments

Comments
 (0)