add-task
Description
Fires when adding a new taskUsage
"add-task": (ev: {
id?: string | number,
task: Partial<ITask>,
target?: string | number,
mode?: "before" | "after" | "child",
show?: "x" | "y" | "xy" | boolean,
select?: boolean,
}) => boolean | void;
info
For handling the actions you can use the Event Bus methods. Returning false from the action handler will block the action (see Preventing actions)
Parameters
The callback of the add-task action can take an object with the following parameters:
id- (optional) the id of a new tasktarget- (required) the task ID before or after which a new task will be addedtask- (required) the task object. The list of parameters you can see here: tasks.mode- (required) specifies where to place a task: before - before the task which id is specified, after it (after), or creates the child task for the target (child)show– (optional) determines whether and how to scroll to the new task after creation:- "x" – scroll horizontally
- "y" – scroll vertically
- "xy" – scroll both axes
- true – scroll in both directions
- false – do not scroll
select- (optional) set totrue(default) to select the added task; otherwise,false
Example
Use the api.exec method to trigger the action:
<script>
import { Gantt } from "@svar-ui/svelte-gantt";
import { Button } from "@svar-ui/svelte-core";
import { getData } from "./common/data";
const { tasks, links } = getData();
let api = $state();
function handleAdd() {
api.exec("add-task", { task: {} });
}
</script>
<Button type="primary" onclick={handleAdd}>Add task</Button>
<Gantt bind:this={api} {tasks} {links} />
In the example below we use the api.intercept() method to change the task variable value replacing it with the relevant data from the add-task action:
<script>
import { getData } from "./common/data";
import { Gantt } from "@svar-ui/svelte-gantt";
const data = getData();
let task;
function init(api) {
api.intercept("add-task", data => {
task = data.task;
});
}
</script>
<Gantt
tasks={data.tasks}
{init} />
Prevent adding a task
You can intercept the action and return false to block it:
api.intercept("add-task", ev => {
if (!allowAdd) return false; // prevents adding
});
Related articles: