11const COMPONENT_NAME = 'data-feedback'
22const COMPONENT_SELECTOR = `[${ COMPONENT_NAME } ]`
3- const HELPFUL_BUTTON_SELECTOR = `[data-ref="feedback[helpful]"]`
4- const UNHELPFUL_BUTTON_SELECTOR = `[data-ref="feedback[unhelpful]"]`
3+ const BUTTON_SELECTOR = `[data-ref-button]`
54const CONTENT_SELECTOR = `[data-ref="feedback[content]"]`
65const ACTIVE_CLASS = 'data-active-class'
76const typewriter = require ( 'analytics' )
87
98export default function ( ) {
109 const components = document . querySelectorAll ( COMPONENT_SELECTOR )
10+ const buttons = document . querySelectorAll ( BUTTON_SELECTOR )
11+ const helpfulButtons = [ ...buttons ] . filter ( button => button . dataset . refButton === 'helpful' )
12+ const unhelpfulButtons = [ ...buttons ] . filter ( button => button . dataset . refButton === 'unhelpful' )
13+ const contents = document . querySelectorAll ( CONTENT_SELECTOR )
1114
1215 const trackFeedback = ( helpful , section ) => {
1316 typewriter . feedbackProvided ( {
@@ -18,38 +21,42 @@ export default function () {
1821 } )
1922 }
2023
21- for ( let i = 0 ; i < components . length ; i ++ ) {
22- const helpfulButton = components [ i ] . querySelector ( HELPFUL_BUTTON_SELECTOR )
23- const unhelpfulButton = components [ i ] . querySelector ( UNHELPFUL_BUTTON_SELECTOR )
24- const content = components [ i ] . querySelector ( CONTENT_SELECTOR )
25-
26- const clickHandler = ( ) => {
27- if ( content ) {
28- content . hidden = false
24+ const clickHandler = ( ) => {
25+ if ( contents . length ) {
26+ for ( let i = 0 ; i < contents . length ; i ++ ) {
27+ contents [ i ] . hidden = false
2928 }
30-
31- helpfulButton . disabled = true
32- unhelpfulButton . disabled = true
3329 }
3430
35- helpfulButton . addEventListener ( 'click' , ( event ) => {
36- event . preventDefault ( )
37- const section = helpfulButton . hasAttribute ( 'data-section' ) ? 'right-nav' : 'footer'
38- const activeClass = helpfulButton . getAttribute ( ACTIVE_CLASS )
39- helpfulButton . classList . add ( activeClass )
31+ for ( let i = 0 ; i < buttons . length ; i ++ ) {
32+ buttons [ i ] . disabled = true
33+ }
34+ }
4035
41- clickHandler ( )
42- trackFeedback ( true , section )
43- } )
36+ const addActiveClasses = ( elements ) => {
37+ for ( let i = 0 ; i < elements . length ; i ++ ) {
38+ const activeClass = elements [ i ] . getAttribute ( ACTIVE_CLASS )
39+ elements [ i ] . classList . add ( activeClass )
40+ }
41+ }
4442
45- unhelpfulButton . addEventListener ( 'click' , ( event ) => {
43+ for ( let i = 0 ; i < buttons . length ; i ++ ) {
44+ buttons [ i ] . addEventListener ( 'click' , ( event ) => {
4645 event . preventDefault ( )
47- const section = helpfulButton . hasAttribute ( 'data-section' ) ? 'side-nav' : 'footer'
48- const activeClass = unhelpfulButton . getAttribute ( ACTIVE_CLASS )
49- unhelpfulButton . classList . add ( activeClass )
46+
47+ const section = buttons [ i ] . hasAttribute ( 'data-section' ) ? 'right-nav' : 'footer'
48+ const helpful = buttons [ i ] . dataset . refButton === 'helpful'
49+ let activeButtons = [ ]
5050
5151 clickHandler ( )
52- trackFeedback ( false , section )
52+
53+ if ( helpful ) {
54+ addActiveClasses ( helpfulButtons )
55+ trackFeedback ( true , section )
56+ } else {
57+ addActiveClasses ( unhelpfulButtons )
58+ trackFeedback ( false , section )
59+ }
5360 } )
5461 }
5562}
0 commit comments