Merge branch 'main' into module/stock
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
href = '#',
|
||||
onclick = evt => { evt.preventDefault(); startEdit(); return false },
|
||||
onSet = newVal => {return true;},
|
||||
title = t('long_click_to_edit'),
|
||||
title = t('click_to_edit'),
|
||||
type = 'div',
|
||||
value = $bindable(null)
|
||||
} = $props();
|
||||
|
||||
@@ -104,29 +104,18 @@
|
||||
if (simple) startEdit();
|
||||
</script>
|
||||
|
||||
<style>
|
||||
textarea{
|
||||
width: 100%;
|
||||
min-height: 100px;
|
||||
}
|
||||
div{
|
||||
min-width: 40px;
|
||||
min-height: 20px;
|
||||
}
|
||||
div.editable:hover{
|
||||
border: 1px dotted;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="markdown {editing?'editing':''}">
|
||||
{#if editing}
|
||||
<div class="boundary">
|
||||
<textarea bind:value={editValue.source} onkeyup={typed} autofocus={!simple}></textarea>
|
||||
<span class="buttons">
|
||||
<button class="cancel" onclick={e => editing = false}>{t('cancel')}</button>
|
||||
<button class="save" onclick={doSave}>{t('save')}</button>
|
||||
</span>
|
||||
<span class="hint">{@html t('markdown_supported')}</span>
|
||||
<textarea bind:value={editValue.source} onkeyup={typed} autofocus={!simple}></textarea>
|
||||
<div class="preview">{@html target(editValue.rendered)}</div>
|
||||
{#if !simple}
|
||||
<div class="buttons">
|
||||
<button class="cancel" onclick={e => editing = false}>{t('cancel')}</button>
|
||||
<button class="save" onclick={doSave}>{t('save')}</button>
|
||||
</div>
|
||||
{/if}
|
||||
{:else}
|
||||
<svelte:element this={type} {onclick} {oncontextmenu} class={{editable}} title={t('right_click_to_edit')} >{@html target(editValue.rendered)}</svelte:element>
|
||||
{/if}
|
||||
<svelte:element this={type} {onclick} {oncontextmenu} class={{editable}} title={t('long_click_to_edit')} >{@html target(editValue.rendered)}</svelte:element>
|
||||
</div>
|
||||
@@ -85,7 +85,7 @@
|
||||
<textarea bind:value={editValue} onkeyup={typed} autofocus></textarea>
|
||||
{:else}
|
||||
{#if value}
|
||||
<svelte:element this={type} {onmousedown} {onmouseup} {ontouchstart} {ontouchend} class={{editable}} title={t('long_click_to_edit')} >
|
||||
<svelte:element this={type} {onmousedown} {onmouseup} {ontouchstart} {ontouchend} class={{editable}} title={t('right_click_to_edit')} >
|
||||
{#each value.split("\n") as line}
|
||||
{line}<br/>
|
||||
{/each}
|
||||
|
||||
@@ -49,5 +49,4 @@
|
||||
</fieldset>
|
||||
</form>
|
||||
<Notes module="time" entity_id={record.id} />
|
||||
{record.description.source}
|
||||
{/if}
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
{#if field}
|
||||
<div class={field.name}>
|
||||
{#if field.value.includes('\\n')}
|
||||
<MultiLineEditor type="div" editable={true} value={field.value.replaceAll('\\n','\n')} {onSet} title={t(field.name)+' – '+t('long_click_to_edit')} />
|
||||
<MultiLineEditor type="div" editable={true} value={field.value.replaceAll('\\n','\n')} {onSet} title={t(field.name)+' – '+t('right_click_to_edit')} />
|
||||
{:else}
|
||||
<LineEditor type="div" editable={true} value={field.value} {onSet} title={t(field.name)+' – '+t('long_click_to_edit')} />
|
||||
<LineEditor type="div" editable={true} value={field.value} {onSet} title={t(field.name)+' – '+t('click_to_edit')} />
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
@@ -23,7 +23,6 @@
|
||||
let tasks = $state({});
|
||||
let users = {};
|
||||
let columns = $derived(project.allowed_states?Object.keys(project.allowed_states).length+1:1);
|
||||
const controller = new AbortController();
|
||||
|
||||
$effect(() => updateUrl(filter_input));
|
||||
|
||||
@@ -175,8 +174,7 @@
|
||||
}
|
||||
|
||||
function openTask(task_id){
|
||||
controller.abort();
|
||||
router.navigate(`/task/${task_id}/view`)
|
||||
window.open(`/task/${task_id}/view`, '_blank').focus();
|
||||
}
|
||||
|
||||
async function save_bookmark(){
|
||||
|
||||
@@ -210,9 +210,7 @@
|
||||
</div>
|
||||
{#if task.description}
|
||||
<div>{t('description')}</div>
|
||||
<div class="description">
|
||||
<MarkdownEditor bind:value={task.description} editable={true} onSet={val => update({description:val})} />
|
||||
</div>
|
||||
<MarkdownEditor bind:value={task.description} editable={true} onSet={val => update({description:val})} />
|
||||
{/if}
|
||||
{#if !showSettings && task.start_date}
|
||||
<div>{t('start_date')}</div>
|
||||
@@ -277,6 +275,10 @@
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
<div>{t('tags')}</div>
|
||||
<div class="tags">
|
||||
<TagList module="task" {id} user_list={Object.keys(task.members).map(id => +id)} />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
{t('subtasks')}
|
||||
@@ -288,10 +290,6 @@
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div>{t('tags')}</div>
|
||||
<div class="tags">
|
||||
<TagList module="task" {id} user_list={Object.keys(task.members).map(id => +id)} />
|
||||
</div>
|
||||
<h3>{t('notes')}</h3>
|
||||
<div>
|
||||
<Notes module="task" entity_id={id} />
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
{time.duration.toFixed(3)} h
|
||||
{/if}
|
||||
</td>
|
||||
<td class="user">
|
||||
<td class="user" onclick={e => {detail = time.id}}>
|
||||
{users[time.user_id].name}
|
||||
</td>
|
||||
<td class="subject" onclick={e => {detail = time.id}}>
|
||||
|
||||
Reference in New Issue
Block a user