From 11bf0514455fe4a06fb909a080a9b399248040d4 Mon Sep 17 00:00:00 2001 From: Klaudia Date: Thu, 16 Jan 2020 15:42:08 +0100 Subject: [PATCH] fix(feedback): Disable all buttons based on click on no matter which feedback element --- js/feedback/index.js | 59 ++++++++++++++------------ src/_includes/components/feedback.html | 4 +- src/_includes/sidebar/feedback.html | 4 +- 3 files changed, 37 insertions(+), 30 deletions(-) diff --git a/js/feedback/index.js b/js/feedback/index.js index 4194eb9f24..8e7df807fc 100644 --- a/js/feedback/index.js +++ b/js/feedback/index.js @@ -1,13 +1,16 @@ const COMPONENT_NAME = 'data-feedback' const COMPONENT_SELECTOR = `[${COMPONENT_NAME}]` -const HELPFUL_BUTTON_SELECTOR = `[data-ref="feedback[helpful]"]` -const UNHELPFUL_BUTTON_SELECTOR = `[data-ref="feedback[unhelpful]"]` +const BUTTON_SELECTOR = `[data-ref-button]` const CONTENT_SELECTOR = `[data-ref="feedback[content]"]` const ACTIVE_CLASS = 'data-active-class' const typewriter = require('analytics') export default function () { const components = document.querySelectorAll(COMPONENT_SELECTOR) + const buttons = document.querySelectorAll(BUTTON_SELECTOR) + const helpfulButtons = [...buttons].filter(button => button.dataset.refButton === 'helpful') + const unhelpfulButtons = [...buttons].filter(button => button.dataset.refButton === 'unhelpful') + const contents = document.querySelectorAll(CONTENT_SELECTOR) const trackFeedback = (helpful, section) => { typewriter.feedbackProvided({ @@ -18,38 +21,42 @@ export default function () { }) } - for (let i = 0; i < components.length; i++) { - const helpfulButton = components[i].querySelector(HELPFUL_BUTTON_SELECTOR) - const unhelpfulButton = components[i].querySelector(UNHELPFUL_BUTTON_SELECTOR) - const content = components[i].querySelector(CONTENT_SELECTOR) - - const clickHandler = () => { - if (content) { - content.hidden = false + const clickHandler = () => { + if (contents.length) { + for (let i = 0; i < contents.length; i++) { + contents[i].hidden = false } - - helpfulButton.disabled = true - unhelpfulButton.disabled = true } - helpfulButton.addEventListener('click', (event) => { - event.preventDefault() - const section = helpfulButton.hasAttribute('data-section') ? 'right-nav' : 'footer' - const activeClass = helpfulButton.getAttribute(ACTIVE_CLASS) - helpfulButton.classList.add(activeClass) + for (let i = 0; i < buttons.length; i++) { + buttons[i].disabled = true + } + } - clickHandler() - trackFeedback(true, section) - }) + const addActiveClasses = (elements) => { + for (let i = 0; i < elements.length; i++) { + const activeClass = elements[i].getAttribute(ACTIVE_CLASS) + elements[i].classList.add(activeClass) + } + } - unhelpfulButton.addEventListener('click', (event) => { + for (let i = 0; i < buttons.length; i++) { + buttons[i].addEventListener('click', (event) => { event.preventDefault() - const section = helpfulButton.hasAttribute('data-section') ? 'side-nav' : 'footer' - const activeClass = unhelpfulButton.getAttribute(ACTIVE_CLASS) - unhelpfulButton.classList.add(activeClass) + + const section = buttons[i].hasAttribute('data-section') ? 'right-nav' : 'footer' + const helpful = buttons[i].dataset.refButton === 'helpful' + let activeButtons = [] clickHandler() - trackFeedback(false, section) + + if (helpful) { + addActiveClasses(helpfulButtons) + trackFeedback(true, section) + } else { + addActiveClasses(unhelpfulButtons) + trackFeedback(false, section) + } }) } } diff --git a/src/_includes/components/feedback.html b/src/_includes/components/feedback.html index 8d9e32b8fa..ac7f1b3e1b 100644 --- a/src/_includes/components/feedback.html +++ b/src/_includes/components/feedback.html @@ -23,7 +23,7 @@

Was this page helpful?

-
-
-