import { html, LitElement } from "lit"; import { customElement, property } from "lit/decorators.js"; import { Ref, createRef, ref } from 'lit/directives/ref.js'; import { escapeXml } from "."; @customElement("create-addressbook-form") export class CreateAddressbookForm extends LitElement { constructor() { super() } protected override createRenderRoot() { return this } @property() user: string = '' @property() principal: string = '' @property() addr_id: string = '' @property() displayname: string = '' @property() description: string = '' dialog: Ref = createRef() form: Ref = createRef() override render() { return html`

Create addressbook





` } async submit(e: SubmitEvent) { console.log(this.displayname) e.preventDefault() if (!this.addr_id) { alert("Empty id") return } if (!this.displayname) { alert("Empty displayname") return } let response = await fetch(`/carddav/principal/${this.principal || this.user}/${this.addr_id}`, { method: 'MKCOL', headers: { 'Content-Type': 'application/xml' }, body: ` ${escapeXml(this.displayname)} ${this.description ? `${escapeXml(this.description)}` : ''} ` }) if (response.status >= 400) { alert(`Error ${response.status}: ${await response.text()}`) return null } window.location.reload() return null } } declare global { interface HTMLElementTagNameMap { 'create-addressbook-form': CreateAddressbookForm } }