Skip to content

Commit 1fc3b4e

Browse files
committed
update aria attributes + elements should be in getter
1 parent 47ec7e9 commit 1fc3b4e

File tree

7 files changed

+27
-17
lines changed

7 files changed

+27
-17
lines changed

packages/feedback/src/types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ export interface FeedbackThemes {
254254
}
255255

256256
export interface FeedbackComponent<T extends HTMLElement> {
257-
el: T;
257+
el: T | null;
258258
}
259259

260260
/**

packages/feedback/src/widget/Actor.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ export function Actor({ buttonLabel, onClick }: ActorProps): ActorComponent {
3030
{
3131
type: 'button',
3232
className: 'widget__actor',
33-
ariaLabel: buttonLabel,
34-
ariaHidden: 'false',
33+
['aria-label']: buttonLabel,
34+
['aria-hidden']: 'false',
3535
},
3636
Icon().el,
3737
createElement(
@@ -46,14 +46,14 @@ export function Actor({ buttonLabel, onClick }: ActorProps): ActorComponent {
4646
el.addEventListener('click', _handleClick);
4747

4848
return {
49-
el,
49+
get el() { return el },
5050
show: (): void => {
5151
el.classList.remove('widget__actor--hidden');
52-
el.setAttribute('ariaHidden', 'false');
52+
el.setAttribute('aria-hidden', 'false');
5353
},
5454
hide: (): void => {
5555
el.classList.add('widget__actor--hidden');
56-
el.setAttribute('ariaHidden', 'true');
56+
el.setAttribute('aria-hidden', 'true');
5757
},
5858
};
5959
}

packages/feedback/src/widget/Dialog.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export function Dialog({
128128
);
129129

130130
return {
131-
el,
131+
get el() { return el; },
132132
showError,
133133
hideError,
134134
open,

packages/feedback/src/widget/Form.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,25 +95,25 @@ export function Form({
9595

9696
const errorEl = createElement('div', {
9797
className: 'form__error-container form__error-container--hidden',
98-
ariaHidden: 'true',
98+
['aria-hidden']: 'true',
9999
});
100100

101101
function showError(message: string): void {
102102
errorEl.textContent = message;
103103
errorEl.classList.remove('form__error-container--hidden');
104-
errorEl.setAttribute('ariaHidden', 'false');
104+
errorEl.setAttribute('aria-hidden', 'false');
105105
}
106106

107107
function hideError(): void {
108108
errorEl.textContent = '';
109109
errorEl.classList.add('form__error-container--hidden');
110-
errorEl.setAttribute('ariaHidden', 'true');
110+
errorEl.setAttribute('aria-hidden', 'true');
111111
}
112112

113113
const nameEl = createElement('input', {
114114
id: 'name',
115115
type: showName ? 'text' : 'hidden',
116-
ariaHidden: showName ? 'false' : 'true',
116+
['aria-hidden']: showName ? 'false' : 'true',
117117
name: 'name',
118118
className: 'form__input',
119119
placeholder: namePlaceholder,
@@ -123,7 +123,7 @@ export function Form({
123123
const emailEl = createElement('input', {
124124
id: 'email',
125125
type: showEmail ? 'text' : 'hidden',
126-
ariaHidden: showEmail ? 'false' : 'true',
126+
['aria-hidden']: showEmail ? 'false' : 'true',
127127
name: 'email',
128128
className: 'form__input',
129129
placeholder: emailPlaceholder,
@@ -145,6 +145,7 @@ export function Form({
145145
{
146146
type: 'button',
147147
className: 'btn btn--default',
148+
['aria-label']: cancelButtonLabel,
148149
onClick: (e: Event) => {
149150
onCancel && onCancel(e);
150151
},

packages/feedback/src/widget/Icon.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ export function Icon(): IconReturn {
5151
svg.appendChild(speakerDefs).appendChild(speakerClipPathDef).appendChild(speakerRect);
5252

5353
return {
54-
el: svg,
54+
get el() {return svg},
5555
};
5656
}

packages/feedback/src/widget/SuccessIcon.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ export function SuccessIcon(): IconReturn {
5757
svg.appendChild(speakerDefs).appendChild(speakerClipPathDef).appendChild(speakerRect);
5858

5959
return {
60-
el: svg,
60+
get el() {return svg},
6161
};
6262
}

packages/feedback/src/widget/createWidget.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ export function createWidget({ shadow, options, attachTo }: CreateWidgetParams):
4242
},
4343
});
4444

45+
if (!success.el) {
46+
throw new Error('Unable to show success message')
47+
}
48+
4549
shadow.appendChild(success.el);
4650

4751
const timeoutId = setTimeout(() => {
@@ -108,7 +112,7 @@ export function createWidget({ shadow, options, attachTo }: CreateWidgetParams):
108112
* Removes the default actor element
109113
*/
110114
function removeActor(): void {
111-
actor && actor.el.remove();
115+
actor && actor.el && actor.el.remove();
112116
}
113117

114118
/**
@@ -155,6 +159,10 @@ export function createWidget({ shadow, options, attachTo }: CreateWidgetParams):
155159
onSubmit: _handleFeedbackSubmit,
156160
});
157161

162+
if (!dialog.el) {
163+
throw new Error('Unable to open Feedback dialog');
164+
}
165+
158166
shadow.appendChild(dialog.el);
159167

160168
// Hides the default actor whenever dialog is opened
@@ -189,7 +197,8 @@ export function createWidget({ shadow, options, attachTo }: CreateWidgetParams):
189197
function removeDialog(): void {
190198
if (dialog) {
191199
hideDialog();
192-
dialog.el.remove();
200+
const dialogEl = dialog.el;
201+
dialogEl && dialogEl.remove();
193202
dialog = undefined;
194203
}
195204
}
@@ -213,7 +222,7 @@ export function createWidget({ shadow, options, attachTo }: CreateWidgetParams):
213222

214223
if (!attachTo) {
215224
actor = Actor({ buttonLabel: options.buttonLabel, onClick: handleActorClick });
216-
shadow.appendChild(actor.el);
225+
actor.el && shadow.appendChild(actor.el);
217226
} else {
218227
attachTo.addEventListener('click', handleActorClick);
219228
}

0 commit comments

Comments
 (0)