MOBILE-4338 quiz: Fix popover feedback
parent
ae83b7d87b
commit
647f105873
|
@ -855,10 +855,13 @@ export class CoreQuestionHelperProvider {
|
||||||
const icons = <HTMLElement[]> Array.from(element.querySelectorAll('ion-icon.questioncorrectnessicon'));
|
const icons = <HTMLElement[]> Array.from(element.querySelectorAll('ion-icon.questioncorrectnessicon'));
|
||||||
const title = Translate.instant('core.question.feedback');
|
const title = Translate.instant('core.question.feedback');
|
||||||
const getClickableFeedback = (icon: HTMLElement) => {
|
const getClickableFeedback = (icon: HTMLElement) => {
|
||||||
if (icon.parentElement instanceof HTMLButtonElement && icon.parentElement.dataset.toggle === 'popover') {
|
const parentElement = icon.parentElement;
|
||||||
|
const parentIsClickable = parentElement instanceof HTMLButtonElement || parentElement instanceof HTMLAnchorElement;
|
||||||
|
|
||||||
|
if (parentElement && parentIsClickable && parentElement.dataset.toggle === 'popover') {
|
||||||
return {
|
return {
|
||||||
element: icon.parentElement,
|
element: parentElement,
|
||||||
html: icon.parentElement?.dataset.content,
|
html: parentElement?.dataset.content,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -866,7 +869,7 @@ export class CoreQuestionHelperProvider {
|
||||||
if (icon.hasAttribute('tappable')) {
|
if (icon.hasAttribute('tappable')) {
|
||||||
return {
|
return {
|
||||||
element: icon,
|
element: icon,
|
||||||
html: icon.parentElement?.querySelector('.feedbackspan.accesshide')?.innerHTML,
|
html: parentElement?.querySelector('.feedbackspan.accesshide')?.innerHTML,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -881,7 +884,11 @@ export class CoreQuestionHelperProvider {
|
||||||
}
|
}
|
||||||
|
|
||||||
// There's a hidden feedback, show it when the icon is clicked.
|
// There's a hidden feedback, show it when the icon is clicked.
|
||||||
target.element.addEventListener('click', () => {
|
target.element.dataset.disabledA11yClicks = 'true';
|
||||||
|
target.element.addEventListener('click', event => {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
CoreTextUtils.viewText(title, target.html ?? '', {
|
CoreTextUtils.viewText(title, target.html ?? '', {
|
||||||
component: component,
|
component: component,
|
||||||
componentId: componentId,
|
componentId: componentId,
|
||||||
|
|
|
@ -536,9 +536,15 @@ export class CoreDom {
|
||||||
element: HTMLElement & {disabled?: boolean},
|
element: HTMLElement & {disabled?: boolean},
|
||||||
callback: (event: MouseEvent | KeyboardEvent) => void,
|
callback: (event: MouseEvent | KeyboardEvent) => void,
|
||||||
): void {
|
): void {
|
||||||
element.addEventListener('click', (event) => callback(event));
|
const enabled = () => !CoreUtils.isTrueOrOne(element.dataset.disabledA11yClicks ?? 'false');
|
||||||
|
|
||||||
|
element.addEventListener('click', (event) => enabled() && callback(event));
|
||||||
|
|
||||||
element.addEventListener('keydown', (event) => {
|
element.addEventListener('keydown', (event) => {
|
||||||
|
if (!enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (event.key === ' ' || event.key === 'Enter') {
|
if (event.key === ' ' || event.key === 'Enter') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
@ -546,6 +552,10 @@ export class CoreDom {
|
||||||
});
|
});
|
||||||
|
|
||||||
element.addEventListener('keyup', (event) => {
|
element.addEventListener('keyup', (event) => {
|
||||||
|
if (!enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (event.key === ' ' || event.key === 'Enter') {
|
if (event.key === ' ' || event.key === 'Enter') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
Loading…
Reference in New Issue