import { LitElement, html } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { ifDefined } from 'lit/directives/if-defined.js'; import styles from './breadcrumb-item.styles'; import { HasSlotController } from '~/internal/slot'; /** * @since 2.0 * @status stable * * @slot - The breadcrumb item's label. * @slot prefix - An optional prefix, usually an icon or icon button. * @slot suffix - An optional suffix, usually an icon or icon button. * @slot separator - The separator to use for the breadcrumb item. This will only change the separator for this item. If * you want to change it for all items in the group, set the separator on `` instead. * * @csspart base - The component's base wrapper. * @csspart label - The breadcrumb item's label. * @csspart prefix - The container that wraps the prefix slot. * @csspart suffix - The container that wraps the suffix slot. * @csspart separator - The container that wraps the separator slot. */ @customElement('sl-breadcrumb-item') export default class SlBreadcrumbItem extends LitElement { static styles = styles; private readonly hasSlotController = new HasSlotController(this, 'prefix', 'suffix'); /** * Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered * internally. When unset, a button will be rendered instead. */ @property() href?: string; /** Tells the browser where to open the link. Only used when `href` is set. */ @property() target?: '_blank' | '_parent' | '_self' | '_top'; /** The `rel` attribute to use on the link. Only used when `href` is set. */ @property() rel = 'noreferrer noopener'; render() { const isLink = typeof this.href !== 'undefined'; return html`
${isLink ? html` ` : html` `}
`; } } declare global { interface HTMLElementTagNameMap { 'sl-breadcrumb-item': SlBreadcrumbItem; } }