* initial commit federation * more federation * more federation * more federation * completes follow, accept, undo * add trail create activity * process trail create activity * more trail create activity * adds missing endpoints * adds update and delete activity * adds comment activities * adds activities back * adds summit logs activities * deletes follow counts table * fixes migrations * fixes migrations * fixes migrations * fixes migrations * adds remote profiles * ctd * ctd * we are getting closer... * adds public summit logs * fixes federated trails in lists * adds remote lists * adds list activites * fixes lists * adds notifications * adds iri redirect * fixes comments and summitlogs * fixes follows and profiles * adds asynchronous send * fixes list search * adds encryption key * bug fixes * fixes activity signing * removes custon activity object types * adds html editor * fixes html editor * fixes display issues on mastodon * adds federated sharing * finishes announcements * fixes small summit log issues * adds trail likes * finalizes likes * fixes images for komoot * add disable federation option * adds private profiles * updates docs * adds federated comments * adds trail and comments actvitiypub routes * adds mentions to editor * adds mentions to trails, comments, summit logs * updates theme * updates theme * update docs * update docs * updates docs * fixes various frontend problems * fixes activitypub follows api * updates docs * updates docs --------- Co-authored-by: Christian Beutel <>
51 lines
1.2 KiB
Svelte
51 lines
1.2 KiB
Svelte
<script module lang="ts">
|
|
export type SelectItem = {
|
|
text: string;
|
|
value: any;
|
|
};
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
interface Props {
|
|
name?: string;
|
|
items?: SelectItem[];
|
|
value?: any;
|
|
label?: string;
|
|
disabled?: boolean;
|
|
onchange?: (value: any) => void
|
|
}
|
|
|
|
let {
|
|
name = "",
|
|
items = [],
|
|
value = $bindable(items.at(0)?.value ?? ""),
|
|
label = "",
|
|
disabled = false,
|
|
onchange
|
|
}: Props = $props();
|
|
|
|
function onChange(target: any) {
|
|
onchange?.(target?.value);
|
|
}
|
|
</script>
|
|
|
|
<div>
|
|
{#if label.length}
|
|
<label for={name} class="text-sm font-medium pb-1">
|
|
{label}
|
|
</label>
|
|
{/if}
|
|
<select
|
|
{name}
|
|
class="block bg-input-background h-10 px-4 border-r-8 border-transparent outline-1 outline-input-border rounded-md focus:outline-input-border-focus transition-colors"
|
|
class:text-gray-500={disabled}
|
|
{disabled}
|
|
bind:value
|
|
onchange={(e) => onChange(e.target)}
|
|
>
|
|
{#each items as item}
|
|
<option value={item.value}>{item.text}</option>
|
|
{/each}
|
|
</select>
|
|
</div>
|