import { DeesElement, property, html, customElement, type TemplateResult, css, unsafeCSS, domtools, } from "@design.estate/dees-element"; import * as plugins from "../plugins.js"; import { dedocumentSharedStyle } from "../style.js"; declare global { interface HTMLElementTagNameMap { "dedocument-pagefooter": DePageFooter; } } @customElement("dedocument-pagefooter") export class DePageFooter extends DeesElement { public static demo = () => html` `; @property({ type: Object, }) letterData: plugins.tsclass.business.TLetter; @property({ type: Object, reflect: true, }) documentSettings: plugins.shared.interfaces.IDocumentSettings; @property({ type: Number, }) public pageNumber: number = 1; @property({ type: Number, }) public pageTotalNumber: number = 1; constructor() { super(); domtools.DomTools.setupDomTools(); } public static styles = [ domtools.elementBasic.staticStyles, dedocumentSharedStyle, css` :host { color: #333; } .bottomstripe { position: absolute; display: grid; font-size: 11px; overflow: visible; bottom: 0px; left: 0px; right: 0px; height: 130px; content: ""; padding: 30px var(--RIGHT-MARGIN) 10px var(--LEFT-MARGIN); grid-template-columns: calc(100% / 4) calc(100% / 4) calc(100% / 4) calc( 100% / 4 ); grid-gap: 5px; border-top: 2px solid var(--footer-separator-bg-color, #e4002b); } .bottomstripe .pageNumber { position: absolute; top: 0px; right: var(--RIGHT-MARGIN); color: var(--footer-separator-fg-color, #ffffff); background: var(--footer-separator-bg-color, #e4002b); padding: 3px; font-size: 9px; color: #fff; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; } .bottomstripe .documentTitle { position: absolute; top: -19px; right: var(--RIGHT-MARGIN); color: var(--label-fg); background: var(--label-bg); padding: 3px; font-size: 9px; border-top-left-radius: 3px; border-top-right-radius: 3px; } `, ]; public render(): TemplateResult { return html`
${plugins.shared.translation.translate( this.documentSettings.languageCode, "footer@@address" )}:
${this.letterData.from.name}
${this.letterData.from.address.streetName} ${this.letterData.from.address.houseNumber}
${this.letterData.from.address.postalCode} ${this.letterData.from.address.city}
${this.letterData.from.address.country}
${this.letterData.from.registrationDetails ? html`
${plugins.shared.translation.translate( this.documentSettings.languageCode, "footer@@registration.label" )}:
${this.letterData.from.registrationDetails.registrationName}
reg-#: ${this.letterData.from.registrationDetails .registrationId}
vat-id: ${this.letterData.from.registrationDetails.vatId}
` : null}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "contact@@title" )}:
${plugins.shared.translation.translate( this.documentSettings.languageCode, "contact@@mail" )}: ${this.letterData.from.email}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "contact@@phone" )}: ${this.letterData.from.phone}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "contact@@fax" )}: ${this.letterData.from.fax}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "bankConnection@@title" )}:
${plugins.shared.translation.translate( this.documentSettings.languageCode, "bankConnection@@bank.accountHolder" )}: ${this.letterData?.from?.name}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "bankConnection@@bank.institution" )}: ${this.letterData?.from?.sepaConnection?.institution}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "bankConnection@@bank.iban" )}: ${this.letterData?.from?.sepaConnection?.iban}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "bankConnection@@bank.bic" )}: ${this.letterData?.from?.sepaConnection?.bic}
${this.letterData?.subject}
${plugins.shared.translation.translate( this.documentSettings.languageCode, "footer@@page" )} ${this.pageNumber} ${plugins.shared.translation.translate( this.documentSettings.languageCode, "footer@@pageOf" )} ${this.pageTotalNumber}
`; } }