mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 22:52:22 +00:00
frontend: Add user to global scope and make principal inputs dropdowns for collection creation
This commit is contained in:
@@ -38,7 +38,12 @@ export class CreateAddressbookForm extends LitElement {
|
||||
<form @submit=${this.submit} ${ref(this.form)}>
|
||||
<label>
|
||||
principal (for group addressbooks)
|
||||
<input type="text" name="principal" value=${this.user} @change=${e => this.principal = e.target.value} />
|
||||
<select name="principal" value=${this.user} @change=${e => this.principal = e.target.value}>
|
||||
<option value=${this.user}>${this.user}</option>
|
||||
${window.rusticalUser.memberships.map(membership => html`
|
||||
<option value=${membership}>${membership}</option>
|
||||
`)}
|
||||
</select>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
|
||||
@@ -45,8 +45,13 @@ export class CreateCalendarForm extends LitElement {
|
||||
<h3>Create calendar</h3>
|
||||
<form @submit=${this.submit} ${ref(this.form)}>
|
||||
<label>
|
||||
principal (for group calendar)
|
||||
<input type="text" name="principal" value=${this.user} @change=${e => this.principal = e.target.value} />
|
||||
principal (for group calendars)
|
||||
<select name="principal" value=${this.user} @change=${e => this.principal = e.target.value}>
|
||||
<option value=${this.user}>${this.user}</option>
|
||||
${window.rusticalUser.memberships.map(membership => html`
|
||||
<option value=${membership}>${membership}</option>
|
||||
`)}
|
||||
</select>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { html, LitElement } from "lit";
|
||||
import { customElement, property } from "lit/decorators.js";
|
||||
import { createClient } from "webdav";
|
||||
|
||||
@customElement("delete-button")
|
||||
export class DeleteButton extends LitElement {
|
||||
|
||||
9
crates/frontend/js-components/lib/global.d.ts
vendored
Normal file
9
crates/frontend/js-components/lib/global.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
interface Window {
|
||||
rusticalUser: {
|
||||
id: String,
|
||||
displayname: String | null,
|
||||
memberships: Array<String>,
|
||||
principal_type: "individual" | "group" | "room" | String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,12 @@ let CreateAddressbookForm = class extends i {
|
||||
<form @submit=${this.submit} ${n(this.form)}>
|
||||
<label>
|
||||
principal (for group addressbooks)
|
||||
<input type="text" name="principal" value=${this.user} @change=${(e2) => this.principal = e2.target.value} />
|
||||
<select name="principal" value=${this.user} @change=${(e2) => this.principal = e2.target.value}>
|
||||
<option value=${this.user}>${this.user}</option>
|
||||
${window.rusticalUser.memberships.map((membership) => x`
|
||||
<option value=${membership}>${membership}</option>
|
||||
`)}
|
||||
</select>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
|
||||
@@ -38,8 +38,13 @@ let CreateCalendarForm = class extends i {
|
||||
<h3>Create calendar</h3>
|
||||
<form @submit=${this.submit} ${n(this.form)}>
|
||||
<label>
|
||||
principal (for group calendar)
|
||||
<input type="text" name="principal" value=${this.user} @change=${(e2) => this.principal = e2.target.value} />
|
||||
principal (for group calendars)
|
||||
<select name="principal" value=${this.user} @change=${(e2) => this.principal = e2.target.value}>
|
||||
<option value=${this.user}>${this.user}</option>
|
||||
${window.rusticalUser.memberships.map((membership) => x`
|
||||
<option value=${membership}>${membership}</option>
|
||||
`)}
|
||||
</select>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
{% extends "layouts/default.html" %}
|
||||
|
||||
{% block imports %}
|
||||
<template id="data-rustical-user">{{ user|json }}</template>
|
||||
<script>
|
||||
window.rusticalUser = JSON.parse(document.querySelector('#data-rustical-user').innerHTML)
|
||||
</script>
|
||||
<script type="module" src="/frontend/assets/js/create-calendar-form.mjs" async></script>
|
||||
<script type="module" src="/frontend/assets/js/create-addressbook-form.mjs" async></script>
|
||||
<script type="module" src="/frontend/assets/js/delete-button.mjs" async></script>
|
||||
|
||||
@@ -25,6 +25,7 @@ pub struct Principal {
|
||||
pub displayname: Option<String>,
|
||||
#[serde(default)]
|
||||
pub principal_type: PrincipalType,
|
||||
#[serde(skip_serializing)]
|
||||
pub password: Option<Secret<String>>,
|
||||
#[serde(default)]
|
||||
pub memberships: Vec<String>,
|
||||
|
||||
Reference in New Issue
Block a user