cancelable event

This commit is contained in:
Naegelin 2022-08-12 10:45:45 +02:00
commit 0e34a0631f
4 changed files with 21 additions and 19 deletions

View file

@ -4435,7 +4435,9 @@ None.
### Events
None.
| Event name | Type | Detail |
| :--------- | :--------- | :---------------- |
| cancel | dispatched | <code>null</code> |
## `ToolbarContent`

View file

@ -13684,7 +13684,7 @@
"slot_props": "{}"
}
],
"events": [],
"events": [{ "type": "dispatched", "name": "cancel", "detail": "null" }],
"typedefs": [],
"rest_props": { "type": "Element", "name": "div" }
},

View file

@ -1,4 +1,8 @@
<script>
/**
* @event {null} cancel
*/
/**
* Override the total items selected text
* @type {(totalSelected: number) => string}
@ -6,28 +10,24 @@
export let formatTotalSelected = (totalSelected) =>
`${totalSelected} item${totalSelected === 1 ? "" : "s"} selected`;
/**
* Override the default behavior of the cancel button
* @type {function}
*/
export let cancel ;
import { onMount, getContext } from "svelte";
import { onMount, getContext, createEventDispatcher } from "svelte";
import Button from "../Button/Button.svelte";
let batchSelectedIds = [];
const dispatch = createEventDispatcher();
$: showActions = batchSelectedIds.length > 0;
const ctx = getContext("DataTable");
$: cancelClick = () => {
if (typeof cancel === "function") {
cancel();
} else {
ctx.resetSelectedRowIds()
function cancel() {
const shouldContinue = dispatch("cancel", null, { cancelable: true });
if (shouldContinue) {
ctx.resetSelectedRowIds();
}
};
}
const unsubscribe = ctx.batchSelectedIds.subscribe((value) => {
batchSelectedIds = value;
@ -64,7 +64,7 @@
<Button
class="bx--batch-summary__cancel"
tabindex="{showActions ? '0' : '-1'}"
on:click="{cancelClick}"
on:click="{cancel}"
>
<slot name="cancel">Cancel</slot>
</Button>

View file

@ -12,6 +12,6 @@ export interface ToolbarBatchActionsProps
export default class ToolbarBatchActions extends SvelteComponentTyped<
ToolbarBatchActionsProps,
{},
{ cancel: CustomEvent<null> },
{ default: {}; cancel: {} }
> {}