/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
import {LitElement, html, css, unsafeCSS} from 'lit';
import {customElement, property, query} from 'lit/decorators.js';
import { breakpoints } from '../../breakpoints';
@customElement('iu-paragraph')
export class Paragraph extends LitElement {
static override styles = css`
:host{
display: block;
margin-bottom: var(--iu-spacing-block-sm);
}
@media ${unsafeCSS(breakpoints.md)} {
.column-1{
width: calc(50% - var(--iu-grid-gutter));
}
}
.fs-1 {
--iu-p-f: var(--iu-f-1);
}
.fs-2 p{
--iu-p-f: var(--iu-f-2);
}
@media ${unsafeCSS(breakpoints.md)} {
.fs-3{
--iu-p-f: var(--iu-f-2);
}
}
@media ${unsafeCSS(breakpoints.xl)} {
.fs-3{
--iu-p-f: var(--iu-f-4);
}
}
::slotted(p){
font: var(--iu-p-f) !important;
margin-bottom: 1.125rem !important;
margin-top: 0;
}
`;
@property({type: Number}) columns = 2;
@property({type: Number}) size = 1;
@property({type: Boolean, reflect: true}) nested?: boolean = false;
@query('slot') slotElement!: HTMLSlotElement;
wrapListItems(){
const lists = this.querySelectorAll('ul, ol');
lists.forEach((list) => {
list.classList.add('list')
})
const items = this.querySelectorAll('li')
items.forEach(item => {
const content = item.innerHTML
const newContent = `<span>${content}</span>`
item.innerHTML = newContent
})
}
override firstUpdated(){
this.wrapListItems()
}
override render() {
return html`
<iu-container class="${this.nested ? 'is-nested' : ''}">
<div class="inner fs-${this.size} column-${this.columns}">
<slot></slot>
</div>
</iu-container>
`;
}
}
declare global {
interface HTMLElementTagNameMap {
'iu-paragraph': Paragraph;
}
}