import { BooleanInput } from '@angular/cdk/coercion'; import { AfterViewChecked, ElementRef, ErrorHandler, InjectionToken, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'; import { SbbIconRegistry } from './icon-registry'; /** * Injection token used to provide the current location to `SbbIcon`. * Used to handle server-side rendering and to stub out during unit tests. * @docs-private */ export declare const SBB_ICON_LOCATION: InjectionToken; /** * Stubbed out location for `SbbIcon`. * @docs-private */ export interface SbbIconLocation { getPathname: () => string; } /** @docs-private */ export declare function SBB_ICON_LOCATION_FACTORY(): SbbIconLocation; /** * Component to display an icon. It can be used in the following ways: * * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of * SbbIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format * "[namespace]:[name]", if not the value will be the name of an icon in the default namespace. * Examples: * ` * ` * * - Use a font ligature as an icon by putting the ligature text in the content of the `` * component. You can specify a font by setting the fontSet input to either the CSS class to * apply to use the desired font, or to an alias previously registered with * SbbIconRegistry.registerFontClassAlias. * Examples: * `home * sun` * * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a * CSS class which causes the glyph to be displayed via a :before selector, as in * https://fortawesome.github.io/Font-Awesome/examples/ * Example: * `` */ export declare class SbbIcon implements OnChanges, OnInit, AfterViewChecked, OnDestroy { private _elementRef; private _iconRegistry; private _location; private readonly _errorHandler; /** * Whether the icon should be inlined, automatically sizing the icon to match the font size of * the element the icon is contained in. */ get inline(): boolean; set inline(inline: boolean); private _inline; /** Name of the icon in the SVG icon set. */ svgIcon: string; /** Font set that the icon is a part of. */ get fontSet(): string; set fontSet(value: string); private _fontSet; /** Name of an icon within a font set. */ get fontIcon(): string; set fontIcon(value: string); private _fontIcon; private _previousFontSetClass; private _previousFontIconClass; /** Keeps track of the current page path. */ private _previousPath?; /** Keeps track of the elements and attributes that we've prefixed with the current path. */ private _elementsWithExternalReferences?; /** Subscription to the current in-progress SVG icon request. */ private _currentIconFetch; constructor(_elementRef: ElementRef, _iconRegistry: SbbIconRegistry, ariaHidden: string, _location: SbbIconLocation, _errorHandler: ErrorHandler); /** * Splits an svgIcon binding value into its icon set and icon name components. * Returns a 2-element array of [(icon set), (icon name)]. * The separator for the two fields is ':'. If there is no separator, an empty * string is returned for the icon set and the entire value is returned for * the icon name. If the argument is falsy, returns an array of two empty strings. * Throws an error if the name contains two or more ':' separators. * Examples: * `'kom:cloud-ice-medium' -> ['kom', 'cloud-ice-medium'] * 'custom-icon' -> ['', 'custom-icon'] * null -> ['', ''] * 'a:b:c' -> (throws Error)` */ private _splitIconName; ngOnChanges(changes: SimpleChanges): void; ngOnInit(): void; ngAfterViewChecked(): void; ngOnDestroy(): void; private _usingFontIcon; private _setSvgElement; private _clearSvgElement; private _updateFontIconClasses; /** * Cleans up a value to be used as a fontIcon or fontSet. * Since the value ends up being assigned as a CSS class, we * have to trim the value and omit space-separated values. */ private _cleanupFontValue; /** * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI` * reference. This is required because WebKit browsers require references to be prefixed with * the current path, if the page has a `base` tag. */ private _prependPathToReferences; /** * Caches the children of an SVG element that have `url()` * references that we need to prefix with the current path. */ private _cacheChildrenWithExternalReferences; static ngAcceptInputType_inline: BooleanInput; }