mirror of
https://github.com/bitwarden/browser
synced 2026-02-20 19:34:03 +00:00
* rename bit-icon to bit-svg; create new bit-icon for font icons Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * find and replace current usage Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * add custom eslint warning Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix incorrect usage * fix tests * fix tests * Update libs/components/src/svg/index.ts Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> * Update libs/eslint/components/no-bwi-class-usage.spec.mjs Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> * update component api * update class name * use icon type in iconButton component * update type Icon --> BitSvg * fix bad renames * fix more renames * fix bad input * revert iconButton type * fix lint * fix more inputs * misc fixes Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix test * add eslint ignore * fix lint * add comparison story --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
32 lines
921 B
TypeScript
32 lines
921 B
TypeScript
import { ChangeDetectionStrategy, Component, computed, inject, input } from "@angular/core";
|
|
import { DomSanitizer, SafeHtml } from "@angular/platform-browser";
|
|
|
|
import { BitSvg, isBitSvg } from "@bitwarden/assets/svg";
|
|
|
|
@Component({
|
|
selector: "bit-svg",
|
|
host: {
|
|
"[attr.aria-hidden]": "!ariaLabel()",
|
|
"[attr.aria-label]": "ariaLabel()",
|
|
"[innerHtml]": "innerHtml()",
|
|
class: "tw-max-h-full tw-flex tw-justify-center",
|
|
},
|
|
template: ``,
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class SvgComponent {
|
|
private domSanitizer = inject(DomSanitizer);
|
|
|
|
readonly content = input<BitSvg>();
|
|
readonly ariaLabel = input<string>();
|
|
|
|
protected readonly innerHtml = computed<SafeHtml | null>(() => {
|
|
const content = this.content();
|
|
if (!isBitSvg(content)) {
|
|
return null;
|
|
}
|
|
const svg = content.svg;
|
|
return this.domSanitizer.bypassSecurityTrustHtml(svg);
|
|
});
|
|
}
|