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}
`;
}
}