npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

td-consent-ui

v0.1.0

Published

Treasure Data JS SDK Add-on UIs for Consent Extension

Downloads

5

Readme

Treasure Data JavaScript Consent UIs

Add-on UIs for Treasure Data JavaScript SDK Consent Extension

This add-on provides an example of how you can use TD JavaScript SDK Consent Extension APIs with your UI to build a fully customizable consent management. It includes a cookie banner and a web form for managing consent preferences.

Banner

A small overlay displays on top of your website to let users know that the website is using cookies (and other similar technologies) to collect data for improving user experiences. Users can choose to adjust the preferences as they want.

banner

Form

A web form for managing consent preferences

form

Installing

This add-on depends on Treasure Data JavaScript SDK to work properly, you need to load Treasure Data JavaScript SDK into your website first, see this for more information.

Add the following JavaScript snippet to your website, it is better to put it at the end of the body tag

<script src="https://cdn.treasuredata.com/cm/0.1/td-cm.min.js"></script>

When the script finishes loading, an object TDConsentManager is available in browser’s global context. You can use that object to setup your configurations accordingly

Polyfill

The add-on is using Web Component to build the UIs, some features might not be available in legacy browsers (IE11 for example), includes the following script snippet into your <head> tag

<script src="<https://unpkg.com/@webcomponents/webcomponentsjs/wecomponents-loader.js"></script>

This loader dynamically loads the minimum polyfill bundle, using feature detection.

For more Information: Web Component loader

NPM

Does not work with NodeJS. Browser only

npm install --save td-consent-ui

Yarn

yarn add td-consent-ui

Import

import TDConsentManager from 'td-consent-ui'
const TDConsentManager = require('td-consent-ui')

Usage

When the scripts are ready, you can start configuring the UIs

TDConsentManager.setConfig({
  sdk: td, // Treasure Data JavaScript SDK instance
  container: 'selector',
  bannerContent: 'banner content'
  bannerSubContent: 'banner sub content',
  dialogTitle: 'dialog title',
  dialogDescription: 'description',
  cancelButtonText: 'Cancel',
  saveButtonText: 'Save'
})

Parameters:

  • sdk: Object (required) - Treasure Data JavaScript SDK instance
  • container: String | Object (optional) - Element selector or DOM object. Default document.body
  • bannerContent: String (required) - The banner's content
  • bannerSubContent: String (required) - Text of the link to the web form
  • dialogTitle: String (optional) - Form's title
  • dialogDescription: String (optional) - Form's description
  • cancelButtonText: String (optional) - Cancelling button's text. Default Cancel
  • saveButtonText: String (optional) - Saving button's text. Default Save Settings

After finishing the setup, you can use method showBanner to show the banner or you can use openConsentManager to show the web form and let users adjust their preferences

showBanner()

Show a small overlay on top of the website to let users know that you are collecting their data to improve performance and user experience

TDConsentManager.showBanner()

openConsentManager

Show a web form for managing consent preferences. You can show the web form with your additional consents, please see Context and Consent for how a consent looks like.

TDConsentManager.openConsentManager(options)

Parameters:

  • options: Object (optional)
    • customConsents: Object (optional) - Additional consents
TDConsentManager.opentConsentManager({
	customConsents: {
    'marketing': { // <--- purpose
      description: 'description of consent',
      datatype: 'Attibutes',
      status: 'given | refused',
      expiry_date: 'YYYY-MM-DD',
      context_id: 'context_id'
    },
    'storing': { // <--- purpose
      description: 'description',
      datatype: 'datatype',
      status: 'given | refused',
      expiry_date: 'YYYY-MM-DD',
      context_id: 'context_id'
    },
    'recommendations': { // <--- purpose
      description: 'description',
      datatype: 'datatype',
      status: 'given | refused',
      expiry_date: 'YYYY-MM-DD',
      context_id: 'context_id'
    }
  }
})

Full example

// ************
// script.js
// ************
!(function () {
  function successCallback (preferences) {
    var analytics = preferences['analytics'] || {}
    if (analytics.status === 'given') {
      td.setSignedMode()
      td.unblockEvents()
    } else if (analytics.status === 'refused') {
      td.setAnonymousMode()
      td.blockEvents()
    }

    td.trackPageview()
  }

  var td = new Treasure({
    database: 'database_name',
    writeKey: '1/xxxxxxxxxx',
    host: 'in.treasuredata.com',
    consentManager: {
      successConsentCallback: successCallback,
      expiredConsentsCallback: function (consents) {
        console.log(consents)
      },
      failureConsentCallback: function (error) {
        console.log(error)
      }
    }
  })
  td.ready(function () {
    // setup the UIs
    TDConsentManager.setConfig({
      sdk: td,
      bannerContent: 'We use cookies (and other similar technologies) to collect data to improve your experience on our site.',
      bannerSubContent: 'You can change your preferences at any time'
    })

    // check if the preferences exists
  	// otherwise don't do the setup again.
    if (!td.getPreferences()) {
      var contextId = td.addContext({
        brand: 'All',
        domain_name: '',
        collection_type: 'Whole website',
        collection_point_id: 'whole_website'
      })

      td.addConsents({
        analytics: {
          description: 'Consent description',
          status: td.consentManager.states.GIVEN,
          datatype: 'Visits',
          context_id: contextId,
          expiry_date: '2050-01-01'
        }
      })

      // You might want to save contexts and consents
      // td.saveContexts()
      // td.saveConsents()

      TDConsentManager.showBanner()
    }
  })

  var editPreference = document.querySelector('.edit-preferences')
  editPreference.addEventListener('click', function (event) {
    event.preventDefault()
    TDConsentManager.openConsentManager()
  })
})()

// ************
// index.html
// ************
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Website Title</title>

  <script src="https://unpkg.com/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
  <script type="text/javascript">
    <!-- Load TD JavaScript SDK here -->
  </script>
</head>
<body>
  	...
    <footer>
      <span><a href="#" class='edit-preferences'>Website Data Collection Preferences</a></span>
    </footer>
  </div>
  <script src="https://cdn.treasuredata.com/cm/0.1/td-cm.min.js"></script>
  <script src="script.js"></script>
</body>
</html>

Browsers support

| IE/Edge | Chrome | Firefox | Safari | | ---------------- | ------ | ------- | ------ | | IE11, Edge >= 15 | >= 60 | >= 60 | >= 9 |

Support

Need a hand with something? Shoot us an email at [email protected]