Merge branch 'feature/add_prject_tasks' into dev
Build Docker Image / Docker-Build (push) Successful in 4m18s
Build Docker Image / Clean-Registry (push) Successful in 6s

This commit is contained in:
2026-07-06 16:28:45 +02:00
12 changed files with 67 additions and 11 deletions
+2 -1
View File
@@ -4,6 +4,7 @@
let {
enabled = true,
id = null,
autofocus = false,
getCandidates = dummyGetCandidates,
@@ -148,7 +149,7 @@
</style>
<span class="autocomplete">
<input type="text" bind:value={candidate.display} {onkeyup} autofocus={autofocus} {id} {onblur} />
<input type="text" bind:value={candidate.display} {onkeyup} autofocus={autofocus} {id} {onblur} disabled={!enabled} />
{#if candidates && candidates.length > 0}
<ul bind:this={list_elem} class="suggestions" tabindex="-1">
{#each candidates as candidate,i}
@@ -10,6 +10,7 @@
let {
addMember = (entry) => console.log(`no handler for addMember(${entry})`),
enabled = true,
dropMember = (member) => console.log(`no handler for dropMember(${member})`),
getCandidates = defaultGetCandidates,
members,
@@ -61,7 +62,7 @@
<tr>
<td>{t('add_object',{object:t('member')})}</td>
<td>
<Autocomplete {getCandidates} onSelect={addMember} />
<Autocomplete {getCandidates} onSelect={addMember} {enabled} />
</td>
</tr>
</tbody>
+2 -1
View File
@@ -6,6 +6,7 @@
import Autocomplete from './Autocomplete.svelte';
let {
enabled = true,
getCandidates = async text => {},
heading = t('add_object',{object:t('user')}),
users = $bindable({})
@@ -37,7 +38,7 @@
<tr>
<td>{heading}</td>
<td>
<Autocomplete {getCandidates} {onSelect} />
<Autocomplete {getCandidates} {onSelect} {enabled} />
</td>
</tr>
</tbody>
+12 -2
View File
@@ -25,12 +25,13 @@
let tasks = $state(null);
let show_closed = $state(false);
let new_color = $state({tag:null,color:'#00aa00'})
let inherit_from = $state(0);
let new_state = $state({code:null,name:null})
let state_available=$derived(new_state.name && new_state.code && !project.allowed_states[new_state.code]);
async function addMember(user){
return await update({new_member:+user.id});
return await update({new_member:+user.id,inherit_from});
}
async function addState(){
@@ -239,7 +240,16 @@
</label>
<div class="em">{t('members')}</div>
<div class="em">
<PermissionEditor members={project.members} {updatePermission} {addMember} {dropMember} />
<PermissionEditor members={project.members} {updatePermission} {addMember} {dropMember} enabled={inherit_from != 0}/>
<label>
└→ Inherit task permissions from:
<select bind:value={inherit_from}>
<option value={0}>{t('select user')}</option>
{#each Object.values(project.members) as member (member.user.id)}
<option value={member.user.id}>{member.user.name}</option>
{/each}
</select>
</label>
</div>
{#if project.allowed_states}
{#each Object.keys(project.allowed_states) as key,idx}