mirror of https://github.com/zombieFox/voltTab.git
73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
import { config } from '../../config';
|
|
|
|
import './index.css';
|
|
|
|
export const BookmarkLink = function(linkData, delay) {
|
|
|
|
this.node = {
|
|
link: document.createElement('a'),
|
|
visual: document.createElement('div'),
|
|
letter: document.createElement('div'),
|
|
icon: document.createElement('span'),
|
|
image: document.createElement('img')
|
|
}
|
|
|
|
this.render = () => {
|
|
|
|
this.node.link.classList.add('bookmark-link');
|
|
|
|
this.node.link.style.setProperty('--bookmark-link-delay', (delay / 20));
|
|
|
|
this.node.link.href = linkData.url;
|
|
|
|
if (config.bookmark.newTab) {
|
|
|
|
this.node.link.setAttribute('target', '_blank');
|
|
|
|
};
|
|
|
|
this.node.visual.classList.add('bookmark-visual');
|
|
|
|
this.node.letter.classList.add('bookmark-letter');
|
|
|
|
this.node.icon.classList.add('bookmark-icon');
|
|
|
|
this.node.image.classList.add('bookmark-image');
|
|
|
|
if ('letter' in linkData) {
|
|
|
|
this.node.letter.textContent = linkData.letter;
|
|
|
|
this.node.visual.appendChild(this.node.letter);
|
|
|
|
};
|
|
|
|
if ('icon' in linkData) {
|
|
|
|
const iconClassList = linkData.icon.split(' ');
|
|
|
|
iconClassList.forEach(className => {
|
|
|
|
this.node.icon.classList.add(className);
|
|
|
|
});
|
|
|
|
this.node.visual.appendChild(this.node.icon);
|
|
|
|
};
|
|
|
|
if ('image' in linkData) {
|
|
|
|
this.node.image.src = linkData.image;
|
|
|
|
this.node.visual.appendChild(this.node.image);
|
|
|
|
};
|
|
|
|
this.node.link.appendChild(this.node.visual);
|
|
|
|
}
|
|
|
|
this.link = () => this.node.link;
|
|
|
|
} |