Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Use power-up to copy to clipboard on click

JonHerbert February 4, 2021

I've created a button to take the url of a card and add the relative path to our own url to stop it showing a description when posted to Flock.

Right now it shows the spliced url in a popup which we have to manually copy, the functionality we want is to click the button and have it copy the text.

var GRAY_ICON = 'https://cdn.hyperdev.com/us-east-1%3A3d31b21c-01a0-4da2-8827-4bc6e88b7618%2Ficon-gray.svg';

var onBtnClick = function (t, opts) {
  return t.card("url").then(function (card) {
    var str = JSON.stringify(card, null, 2);
    var parsedURL = JSON.parse(str);
    const url = new URL(parsedURL.url);
    var shortUrl = "Our custom URL" + url.pathname
    updateClipboard(shortUrl); //DOESN'T WORK
    return t.popup({
      title: "Flock Link",
      items: [{
        text: "Our custom URL" + url.pathname //WORKS AND SHOWS IN POPUP
      }]
    });
  }).catch(error => console.log(error));
};

function updateClipboard(newClip) {
  navigator.clipboard.writeText(newClip).then(function () {
    console.log('Success: ' + newClip);
  }, function () {
    console.log('Failed to copy');
  });
} +

window.TrelloPowerUp.initialize({
  'card-buttons': function (t, opts) {
    return [{
      icon: GRAY_ICON,
      text: 'Flock Link',
      callback: onBtnClick,
      condition: 'edit',
      backgroundColor: '#263340',
      color: '#ffffff'
    }, () => {
      console.log('reached');
      var btn = document.querySelector('.button-link[title="Flock Link"]')
      btn.style.backgroundColor = '#263340';
      btn.style.color = '#ffffff';
    }];
  }
});

So, I have tried to remove the t.popup and instead use either navigator.clipboard or document.execCommand as per the docs but I just can't get it to work.

The second issue is trying to change the colour of the button - this should be super simple but I must be overthinking it as I cannot get any subsequent function or other properties to affect the button in anyway.

1 answer

0 votes
Emil Kjær Eriksen February 8, 2022

I would love to be able to do this as well (although in my case, within the card-detail-badges capability).

Unfortunately, I don't think it's possible without specific support within Trello. Power-Ups work from within iframes. When a card button or a card badge is clicked the iframe document will not be in focus since these Power-Ups are rendered natively within Trello outside the iframe. Browsers do not allow clipboard access when the document is not focused.

Of course it's possible to send the text to be copied to the parent (Trello) which could then take over and copy the text to the clipboard but obviously that would require support by Trello.

Did you ever figure out a workaround?

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events