mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 02:11:05 +00:00
fix(types): dispatched events without a detail value should be null
(#1124)
Currently, dispatched events without `e.detail` have a type of `any`. We can be more specific as a `CustomEvent` detail value is `null`.
This commit is contained in:
parent
2f3cff2942
commit
714f47a635
19 changed files with 97 additions and 93 deletions
|
@ -1863,9 +1863,9 @@ export interface HeaderSearchResult {
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :--------- | :---------------------------------------------------------------------------------------------- |
|
| :--------- | :--------- | :---------------------------------------------------------------------------------------------- |
|
||||||
| active | dispatched | <code>any</code> |
|
| active | dispatched | <code>null</code> |
|
||||||
| inactive | dispatched | <code>any</code> |
|
| inactive | dispatched | <code>null</code> |
|
||||||
| clear | dispatched | <code>any</code> |
|
| clear | dispatched | <code>null</code> |
|
||||||
| select | dispatched | <code>{ value: string; selectedResultIndex: number; selectedResult: HeaderSearchResult }</code> |
|
| select | dispatched | <code>{ value: string; selectedResultIndex: number; selectedResult: HeaderSearchResult }</code> |
|
||||||
| change | forwarded | -- |
|
| change | forwarded | -- |
|
||||||
| input | forwarded | -- |
|
| input | forwarded | -- |
|
||||||
|
@ -1957,9 +1957,9 @@ None.
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :--------- | :--------------- |
|
| :--------- | :--------- | :---------------- |
|
||||||
| load | dispatched | <code>any</code> |
|
| load | dispatched | <code>null</code> |
|
||||||
| error | dispatched | <code>any</code> |
|
| error | dispatched | <code>null</code> |
|
||||||
|
|
||||||
## `InlineLoading`
|
## `InlineLoading`
|
||||||
|
|
||||||
|
@ -2274,7 +2274,7 @@ None.
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :--------- | :------------------------------------------- |
|
| :--------- | :--------- | :------------------------------------------- |
|
||||||
| save | dispatched | <code>any</code> |
|
| save | dispatched | <code>null</code> |
|
||||||
| update | dispatched | <code>{ prevValue: any; value: any; }</code> |
|
| update | dispatched | <code>{ prevValue: any; value: any; }</code> |
|
||||||
|
|
||||||
## `Modal`
|
## `Modal`
|
||||||
|
@ -2464,7 +2464,7 @@ None.
|
||||||
| :--------- | :--------- | :------------------------------------------------------------------------------------------------------------- |
|
| :--------- | :--------- | :------------------------------------------------------------------------------------------------------------- |
|
||||||
| blur | dispatched | <code>FocusEvent | CustomEvent<FocusEvent></code> |
|
| blur | dispatched | <code>FocusEvent | CustomEvent<FocusEvent></code> |
|
||||||
| select | dispatched | <code>{ selectedIds: MultiSelectItemId[]; selected: MultiSelectItem[]; unselected: MultiSelectItem[]; }</code> |
|
| select | dispatched | <code>{ selectedIds: MultiSelectItemId[]; selected: MultiSelectItem[]; unselected: MultiSelectItem[]; }</code> |
|
||||||
| clear | dispatched | <code>any</code> |
|
| clear | dispatched | <code>null</code> |
|
||||||
| keydown | forwarded | -- |
|
| keydown | forwarded | -- |
|
||||||
| keyup | forwarded | -- |
|
| keyup | forwarded | -- |
|
||||||
| focus | forwarded | -- |
|
| focus | forwarded | -- |
|
||||||
|
@ -3194,9 +3194,9 @@ None.
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :--------- | :--------------- |
|
| :--------- | :--------- | :---------------- |
|
||||||
| expand | dispatched | <code>any</code> |
|
| expand | dispatched | <code>null</code> |
|
||||||
| collapse | dispatched | <code>any</code> |
|
| collapse | dispatched | <code>null</code> |
|
||||||
| click | forwarded | -- |
|
| click | forwarded | -- |
|
||||||
| mouseover | forwarded | -- |
|
| mouseover | forwarded | -- |
|
||||||
| mouseenter | forwarded | -- |
|
| mouseenter | forwarded | -- |
|
||||||
|
@ -3384,10 +3384,10 @@ None.
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :------------ | :--------- | :--------------- |
|
| :------------ | :--------- | :---------------- |
|
||||||
| open | dispatched | <code>any</code> |
|
| open | dispatched | <code>null</code> |
|
||||||
| close | dispatched | <code>any</code> |
|
| close | dispatched | <code>null</code> |
|
||||||
| click:overlay | dispatched | <code>any</code> |
|
| click:overlay | dispatched | <code>null</code> |
|
||||||
|
|
||||||
## `SideNavDivider`
|
## `SideNavDivider`
|
||||||
|
|
||||||
|
@ -4680,9 +4680,9 @@ None.
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :--------- | :--------------- |
|
| :--------- | :--------- | :---------------- |
|
||||||
| open | dispatched | <code>any</code> |
|
| open | dispatched | <code>null</code> |
|
||||||
| close | dispatched | <code>any</code> |
|
| close | dispatched | <code>null</code> |
|
||||||
| click | forwarded | -- |
|
| click | forwarded | -- |
|
||||||
| mousedown | forwarded | -- |
|
| mousedown | forwarded | -- |
|
||||||
|
|
||||||
|
@ -4709,9 +4709,9 @@ None.
|
||||||
### Events
|
### Events
|
||||||
|
|
||||||
| Event name | Type | Detail |
|
| Event name | Type | Detail |
|
||||||
| :--------- | :--------- | :--------------- |
|
| :--------- | :--------- | :---------------- |
|
||||||
| open | dispatched | <code>any</code> |
|
| open | dispatched | <code>null</code> |
|
||||||
| close | dispatched | <code>any</code> |
|
| close | dispatched | <code>null</code> |
|
||||||
| click | forwarded | -- |
|
| click | forwarded | -- |
|
||||||
| mouseover | forwarded | -- |
|
| mouseover | forwarded | -- |
|
||||||
| mouseenter | forwarded | -- |
|
| mouseenter | forwarded | -- |
|
||||||
|
|
|
@ -4915,9 +4915,9 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "active", "detail": "any" },
|
{ "type": "dispatched", "name": "active", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "inactive", "detail": "any" },
|
{ "type": "dispatched", "name": "inactive", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "clear", "detail": "any" },
|
{ "type": "dispatched", "name": "clear", "detail": "null" },
|
||||||
{
|
{
|
||||||
"type": "dispatched",
|
"type": "dispatched",
|
||||||
"name": "select",
|
"name": "select",
|
||||||
|
@ -5115,8 +5115,8 @@
|
||||||
{ "name": "loading", "default": false, "slot_props": "{}" }
|
{ "name": "loading", "default": false, "slot_props": "{}" }
|
||||||
],
|
],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "load", "detail": "any" },
|
{ "type": "dispatched", "name": "load", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "error", "detail": "any" }
|
{ "type": "dispatched", "name": "error", "detail": "null" }
|
||||||
],
|
],
|
||||||
"typedefs": [],
|
"typedefs": [],
|
||||||
"rest_props": { "type": "Element", "name": "img" }
|
"rest_props": { "type": "Element", "name": "img" }
|
||||||
|
@ -5920,7 +5920,7 @@
|
||||||
],
|
],
|
||||||
"slots": [],
|
"slots": [],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "save", "detail": "any" },
|
{ "type": "dispatched", "name": "save", "detail": "null" },
|
||||||
{
|
{
|
||||||
"type": "dispatched",
|
"type": "dispatched",
|
||||||
"name": "update",
|
"name": "update",
|
||||||
|
@ -6796,7 +6796,7 @@
|
||||||
"name": "select",
|
"name": "select",
|
||||||
"detail": "{ selectedIds: MultiSelectItemId[]; selected: MultiSelectItem[]; unselected: MultiSelectItem[]; }"
|
"detail": "{ selectedIds: MultiSelectItemId[]; selected: MultiSelectItem[]; unselected: MultiSelectItem[]; }"
|
||||||
},
|
},
|
||||||
{ "type": "dispatched", "name": "clear", "detail": "any" },
|
{ "type": "dispatched", "name": "clear", "detail": "null" },
|
||||||
{ "type": "forwarded", "name": "keydown", "element": "input" },
|
{ "type": "forwarded", "name": "keydown", "element": "input" },
|
||||||
{ "type": "forwarded", "name": "keyup", "element": "input" },
|
{ "type": "forwarded", "name": "keyup", "element": "input" },
|
||||||
{ "type": "forwarded", "name": "focus", "element": "input" }
|
{ "type": "forwarded", "name": "focus", "element": "input" }
|
||||||
|
@ -9261,8 +9261,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "expand", "detail": "any" },
|
{ "type": "dispatched", "name": "expand", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "collapse", "detail": "any" },
|
{ "type": "dispatched", "name": "collapse", "detail": "null" },
|
||||||
{ "type": "forwarded", "name": "click", "element": "SearchSkeleton" },
|
{ "type": "forwarded", "name": "click", "element": "SearchSkeleton" },
|
||||||
{
|
{
|
||||||
"type": "forwarded",
|
"type": "forwarded",
|
||||||
|
@ -9831,9 +9831,9 @@
|
||||||
],
|
],
|
||||||
"slots": [{ "name": "__default__", "default": true, "slot_props": "{}" }],
|
"slots": [{ "name": "__default__", "default": true, "slot_props": "{}" }],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "open", "detail": "any" },
|
{ "type": "dispatched", "name": "open", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "close", "detail": "any" },
|
{ "type": "dispatched", "name": "close", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "click:overlay", "detail": "any" }
|
{ "type": "dispatched", "name": "click:overlay", "detail": "null" }
|
||||||
],
|
],
|
||||||
"typedefs": [],
|
"typedefs": [],
|
||||||
"rest_props": { "type": "Element", "name": "nav" }
|
"rest_props": { "type": "Element", "name": "nav" }
|
||||||
|
@ -13104,8 +13104,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "open", "detail": "any" },
|
{ "type": "dispatched", "name": "open", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "close", "detail": "any" },
|
{ "type": "dispatched", "name": "close", "detail": "null" },
|
||||||
{ "type": "forwarded", "name": "click", "element": "div" },
|
{ "type": "forwarded", "name": "click", "element": "div" },
|
||||||
{ "type": "forwarded", "name": "mousedown", "element": "div" }
|
{ "type": "forwarded", "name": "mousedown", "element": "div" }
|
||||||
],
|
],
|
||||||
|
@ -13193,8 +13193,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"events": [
|
"events": [
|
||||||
{ "type": "dispatched", "name": "open", "detail": "any" },
|
{ "type": "dispatched", "name": "open", "detail": "null" },
|
||||||
{ "type": "dispatched", "name": "close", "detail": "any" },
|
{ "type": "dispatched", "name": "close", "detail": "null" },
|
||||||
{ "type": "forwarded", "name": "click", "element": "button" },
|
{ "type": "forwarded", "name": "click", "element": "button" },
|
||||||
{ "type": "forwarded", "name": "mouseover", "element": "button" },
|
{ "type": "forwarded", "name": "mouseover", "element": "button" },
|
||||||
{ "type": "forwarded", "name": "mouseenter", "element": "button" },
|
{ "type": "forwarded", "name": "mouseenter", "element": "button" },
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @event {any} load
|
* @event {null} load
|
||||||
* @event {any} error
|
* @event {null} error
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @event {any} save
|
* @event {null} save
|
||||||
* @event {{ prevValue: any; value: any; }} update
|
* @event {{ prevValue: any; value: any; }} update
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* @typedef {string} MultiSelectItemText
|
* @typedef {string} MultiSelectItemText
|
||||||
* @typedef {{ id: MultiSelectItemId; text: MultiSelectItemText; }} MultiSelectItem
|
* @typedef {{ id: MultiSelectItemId; text: MultiSelectItemText; }} MultiSelectItem
|
||||||
* @event {{ selectedIds: MultiSelectItemId[]; selected: MultiSelectItem[]; unselected: MultiSelectItem[]; }} select
|
* @event {{ selectedIds: MultiSelectItemId[]; selected: MultiSelectItem[]; unselected: MultiSelectItem[]; }} select
|
||||||
* @event {any} clear
|
* @event {null} clear
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @event {any} expand
|
* @event {null} expand
|
||||||
* @event {any} collapse
|
* @event {null} collapse
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @event {any} open
|
* @event {null} open
|
||||||
* @event {any} close
|
* @event {null} close
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @event {any} open
|
* @event {null} open
|
||||||
* @event {any} close
|
* @event {null} close
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** Specify the tooltip text */
|
/** Specify the tooltip text */
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @typedef {{ href: string; text: string; description?: string; }} HeaderSearchResult
|
* @typedef {{ href: string; text: string; description?: string; }} HeaderSearchResult
|
||||||
* @event {any} active
|
* @event {null} active
|
||||||
* @event {any} inactive
|
* @event {null} inactive
|
||||||
* @event {any} clear
|
* @event {null} clear
|
||||||
* @event {{ value: string; selectedResultIndex: number; selectedResult: HeaderSearchResult }} select
|
* @event {{ value: string; selectedResultIndex: number; selectedResult: HeaderSearchResult }} select
|
||||||
* @slot {{ result: HeaderSearchResult; index: number }}
|
* @slot {{ result: HeaderSearchResult; index: number }}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<script>
|
<script>
|
||||||
/**
|
/**
|
||||||
* @event {any} open
|
* @event {null} open
|
||||||
* @event {any} close
|
* @event {null} close
|
||||||
* @event {any} click:overlay
|
* @event {null} click:overlay
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** Set to `true` to use the fixed variant */
|
/** Set to `true` to use the fixed variant */
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
fadeIn
|
fadeIn
|
||||||
ratio="16x9"
|
ratio="16x9"
|
||||||
src=""
|
src=""
|
||||||
on:load="{() => {}}"
|
on:load="{(e) => {
|
||||||
on:error="{() => {}}"
|
console.log(e.detail); // null
|
||||||
|
}}"
|
||||||
|
on:error="{(e) => {
|
||||||
|
console.log(e.detail); // null
|
||||||
|
}}"
|
||||||
/>
|
/>
|
||||||
|
|
2
types/ImageLoader/ImageLoader.svelte.d.ts
vendored
2
types/ImageLoader/ImageLoader.svelte.d.ts
vendored
|
@ -49,7 +49,7 @@ export interface ImageLoaderProps
|
||||||
|
|
||||||
export default class ImageLoader extends SvelteComponentTyped<
|
export default class ImageLoader extends SvelteComponentTyped<
|
||||||
ImageLoaderProps,
|
ImageLoaderProps,
|
||||||
{ load: CustomEvent<any>; error: CustomEvent<any> },
|
{ load: CustomEvent<null>; error: CustomEvent<null> },
|
||||||
{ error: {}; loading: {} }
|
{ error: {}; loading: {} }
|
||||||
> {
|
> {
|
||||||
/**
|
/**
|
||||||
|
|
2
types/LocalStorage/LocalStorage.svelte.d.ts
vendored
2
types/LocalStorage/LocalStorage.svelte.d.ts
vendored
|
@ -18,7 +18,7 @@ export interface LocalStorageProps {
|
||||||
export default class LocalStorage extends SvelteComponentTyped<
|
export default class LocalStorage extends SvelteComponentTyped<
|
||||||
LocalStorageProps,
|
LocalStorageProps,
|
||||||
{
|
{
|
||||||
save: CustomEvent<any>;
|
save: CustomEvent<null>;
|
||||||
update: CustomEvent<{ prevValue: any; value: any }>;
|
update: CustomEvent<{ prevValue: any; value: any }>;
|
||||||
},
|
},
|
||||||
{}
|
{}
|
||||||
|
|
2
types/MultiSelect/MultiSelect.svelte.d.ts
vendored
2
types/MultiSelect/MultiSelect.svelte.d.ts
vendored
|
@ -228,7 +228,7 @@ export default class MultiSelect extends SvelteComponentTyped<
|
||||||
selected: MultiSelectItem[];
|
selected: MultiSelectItem[];
|
||||||
unselected: MultiSelectItem[];
|
unselected: MultiSelectItem[];
|
||||||
}>;
|
}>;
|
||||||
clear: CustomEvent<any>;
|
clear: CustomEvent<null>;
|
||||||
keydown: WindowEventMap["keydown"];
|
keydown: WindowEventMap["keydown"];
|
||||||
keyup: WindowEventMap["keyup"];
|
keyup: WindowEventMap["keyup"];
|
||||||
focus: WindowEventMap["focus"];
|
focus: WindowEventMap["focus"];
|
||||||
|
|
4
types/Search/Search.svelte.d.ts
vendored
4
types/Search/Search.svelte.d.ts
vendored
|
@ -113,8 +113,8 @@ export interface SearchProps {
|
||||||
export default class Search extends SvelteComponentTyped<
|
export default class Search extends SvelteComponentTyped<
|
||||||
SearchProps,
|
SearchProps,
|
||||||
{
|
{
|
||||||
expand: CustomEvent<any>;
|
expand: CustomEvent<null>;
|
||||||
collapse: CustomEvent<any>;
|
collapse: CustomEvent<null>;
|
||||||
click: WindowEventMap["click"];
|
click: WindowEventMap["click"];
|
||||||
mouseover: WindowEventMap["mouseover"];
|
mouseover: WindowEventMap["mouseover"];
|
||||||
mouseenter: WindowEventMap["mouseenter"];
|
mouseenter: WindowEventMap["mouseenter"];
|
||||||
|
|
4
types/Tooltip/Tooltip.svelte.d.ts
vendored
4
types/Tooltip/Tooltip.svelte.d.ts
vendored
|
@ -92,8 +92,8 @@ export interface TooltipProps
|
||||||
export default class Tooltip extends SvelteComponentTyped<
|
export default class Tooltip extends SvelteComponentTyped<
|
||||||
TooltipProps,
|
TooltipProps,
|
||||||
{
|
{
|
||||||
open: CustomEvent<any>;
|
open: CustomEvent<null>;
|
||||||
close: CustomEvent<any>;
|
close: CustomEvent<null>;
|
||||||
click: WindowEventMap["click"];
|
click: WindowEventMap["click"];
|
||||||
mousedown: WindowEventMap["mousedown"];
|
mousedown: WindowEventMap["mousedown"];
|
||||||
},
|
},
|
||||||
|
|
|
@ -43,8 +43,8 @@ export interface TooltipDefinitionProps
|
||||||
export default class TooltipDefinition extends SvelteComponentTyped<
|
export default class TooltipDefinition extends SvelteComponentTyped<
|
||||||
TooltipDefinitionProps,
|
TooltipDefinitionProps,
|
||||||
{
|
{
|
||||||
open: CustomEvent<any>;
|
open: CustomEvent<null>;
|
||||||
close: CustomEvent<any>;
|
close: CustomEvent<null>;
|
||||||
click: WindowEventMap["click"];
|
click: WindowEventMap["click"];
|
||||||
mouseover: WindowEventMap["mouseover"];
|
mouseover: WindowEventMap["mouseover"];
|
||||||
mouseenter: WindowEventMap["mouseenter"];
|
mouseenter: WindowEventMap["mouseenter"];
|
||||||
|
|
6
types/UIShell/HeaderSearch.svelte.d.ts
vendored
6
types/UIShell/HeaderSearch.svelte.d.ts
vendored
|
@ -43,9 +43,9 @@ export interface HeaderSearchProps
|
||||||
export default class HeaderSearch extends SvelteComponentTyped<
|
export default class HeaderSearch extends SvelteComponentTyped<
|
||||||
HeaderSearchProps,
|
HeaderSearchProps,
|
||||||
{
|
{
|
||||||
active: CustomEvent<any>;
|
active: CustomEvent<null>;
|
||||||
inactive: CustomEvent<any>;
|
inactive: CustomEvent<null>;
|
||||||
clear: CustomEvent<any>;
|
clear: CustomEvent<null>;
|
||||||
select: CustomEvent<{
|
select: CustomEvent<{
|
||||||
value: string;
|
value: string;
|
||||||
selectedResultIndex: number;
|
selectedResultIndex: number;
|
||||||
|
|
6
types/UIShell/SideNav/SideNav.svelte.d.ts
vendored
6
types/UIShell/SideNav/SideNav.svelte.d.ts
vendored
|
@ -43,9 +43,9 @@ export interface SideNavProps
|
||||||
export default class SideNav extends SvelteComponentTyped<
|
export default class SideNav extends SvelteComponentTyped<
|
||||||
SideNavProps,
|
SideNavProps,
|
||||||
{
|
{
|
||||||
open: CustomEvent<any>;
|
open: CustomEvent<null>;
|
||||||
close: CustomEvent<any>;
|
close: CustomEvent<null>;
|
||||||
["click:overlay"]: CustomEvent<any>;
|
["click:overlay"]: CustomEvent<null>;
|
||||||
},
|
},
|
||||||
{ default: {} }
|
{ default: {} }
|
||||||
> {}
|
> {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue