mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 20:32:48 +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)}>
|
<form @submit=${this.submit} ${ref(this.form)}>
|
||||||
<label>
|
<label>
|
||||||
principal (for group addressbooks)
|
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>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
<label>
|
<label>
|
||||||
|
|||||||
@@ -45,8 +45,13 @@ export class CreateCalendarForm extends LitElement {
|
|||||||
<h3>Create calendar</h3>
|
<h3>Create calendar</h3>
|
||||||
<form @submit=${this.submit} ${ref(this.form)}>
|
<form @submit=${this.submit} ${ref(this.form)}>
|
||||||
<label>
|
<label>
|
||||||
principal (for group calendar)
|
principal (for group calendars)
|
||||||
<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>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
<label>
|
<label>
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { html, LitElement } from "lit";
|
import { html, LitElement } from "lit";
|
||||||
import { customElement, property } from "lit/decorators.js";
|
import { customElement, property } from "lit/decorators.js";
|
||||||
import { createClient } from "webdav";
|
|
||||||
|
|
||||||
@customElement("delete-button")
|
@customElement("delete-button")
|
||||||
export class DeleteButton extends LitElement {
|
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)}>
|
<form @submit=${this.submit} ${n(this.form)}>
|
||||||
<label>
|
<label>
|
||||||
principal (for group addressbooks)
|
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>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
<label>
|
<label>
|
||||||
|
|||||||
@@ -38,8 +38,13 @@ let CreateCalendarForm = class extends i {
|
|||||||
<h3>Create calendar</h3>
|
<h3>Create calendar</h3>
|
||||||
<form @submit=${this.submit} ${n(this.form)}>
|
<form @submit=${this.submit} ${n(this.form)}>
|
||||||
<label>
|
<label>
|
||||||
principal (for group calendar)
|
principal (for group calendars)
|
||||||
<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>
|
</label>
|
||||||
<br>
|
<br>
|
||||||
<label>
|
<label>
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
{% extends "layouts/default.html" %}
|
{% extends "layouts/default.html" %}
|
||||||
|
|
||||||
{% block imports %}
|
{% 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-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/create-addressbook-form.mjs" async></script>
|
||||||
<script type="module" src="/frontend/assets/js/delete-button.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>,
|
pub displayname: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub principal_type: PrincipalType,
|
pub principal_type: PrincipalType,
|
||||||
|
#[serde(skip_serializing)]
|
||||||
pub password: Option<Secret<String>>,
|
pub password: Option<Secret<String>>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub memberships: Vec<String>,
|
pub memberships: Vec<String>,
|
||||||
|
|||||||
Reference in New Issue
Block a user