All files / packages/sds-recipes/src/modules/c/icon icon.js

41.66% Statements 5/12
100% Branches 0/0
37.5% Functions 3/8
41.66% Lines 5/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46        1x                               2x   2x           1x 1x                                
import { LightningElement, api } from 'lwc';
import { reflectAttribute } from 'sds/utils';
 
const icons = [
  {
    name: 'jam',
    resolver: (symbol) => `https://cdn.jsdelivr.net/npm/jam-icons@2.0.0/svg/${symbol}.svg`,
    mutator: (svg) => {
      svg.setAttribute('fill', 'currentColor');
      return svg;
    },
  },
  {
    name: 'iconoir',
    resolver: (symbol) => `https://cdn.jsdelivr.net/gh/lucaburgio/iconoir@latest/icons/regular/${symbol}.svg`,
  },
  {
    name: 'sds',
    resolver: (symbol) => `https://api.lightningdesignsystem.com/sds/icons/foundation/${symbol}.svg`,
  },
];
 
export default class CustomIcon extends LightningElement {
  // Render component in native shadow mode
  static shadowSupportMode = 'native';
 
  @api symbol;
  @api set = 'iconoir';
  @api
  get size() {
    return this._size;
  }
  set size(value) {
    this._size = value;
    reflectAttribute(this, 'size', this._size);
  }
 
  handleIconRegister(e) {
    this.icon.iconSets = icons;
  }
 
  get icon() {
    return this.template.querySelector('sds-icon');
  }
}