diff options
Diffstat (limited to 'app/assets/javascripts/vue_shared/directives/track_event.js')
-rw-r--r-- | app/assets/javascripts/vue_shared/directives/track_event.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/assets/javascripts/vue_shared/directives/track_event.js b/app/assets/javascripts/vue_shared/directives/track_event.js new file mode 100644 index 00000000000..d1c05c5c267 --- /dev/null +++ b/app/assets/javascripts/vue_shared/directives/track_event.js @@ -0,0 +1,20 @@ +import Tracking from '~/tracking'; + +export default { + bind(el, binding) { + el.dataset.trackingOptions = JSON.stringify(binding.value || {}); + + el.addEventListener('click', () => { + const { category, action, label, property, value } = JSON.parse(el.dataset.trackingOptions); + if (!category || !action) { + return; + } + Tracking.event(category, action, { label, property, value }); + }); + }, + update(el, binding) { + if (binding.value !== binding.oldValue) { + el.dataset.trackingOptions = JSON.stringify(binding.value || {}); + } + }, +}; |