@streamscloud/kit 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/badge/cmp.badge.svelte +4 -0
- package/dist/ui/badge/cmp.badge.svelte.d.ts +1 -0
- package/dist/ui/page-toolbar/cmp.reorderable-checkbox-list.svelte +131 -0
- package/dist/ui/page-toolbar/cmp.reorderable-checkbox-list.svelte.d.ts +31 -0
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox.svelte +14 -0
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox.svelte.d.ts +19 -0
- package/dist/ui/page-toolbar/cmp.toolbar-divider.svelte +19 -0
- package/dist/ui/page-toolbar/cmp.toolbar-divider.svelte.d.ts +35 -0
- package/dist/ui/page-toolbar/cmp.toolbar-filter-select.svelte +143 -0
- package/dist/ui/page-toolbar/cmp.toolbar-filter-select.svelte.d.ts +68 -0
- package/dist/ui/page-toolbar/cmp.toolbar-icon-button.svelte +71 -0
- package/dist/ui/page-toolbar/cmp.toolbar-icon-button.svelte.d.ts +32 -0
- package/dist/ui/page-toolbar/cmp.toolbar-option.svelte +189 -0
- package/dist/ui/page-toolbar/cmp.toolbar-option.svelte.d.ts +47 -0
- package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte +23 -8
- package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte.d.ts +14 -6
- package/dist/ui/page-toolbar/cmp.toolbar-section-title.svelte +46 -0
- package/dist/ui/page-toolbar/cmp.toolbar-section-title.svelte.d.ts +24 -0
- package/dist/ui/page-toolbar/cmp.toolbar-sort-select.svelte +31 -0
- package/dist/ui/page-toolbar/cmp.toolbar-sort-select.svelte.d.ts +44 -0
- package/dist/ui/page-toolbar/{cmp.toolbar-switch-item.svelte → cmp.toolbar-switch.svelte} +10 -10
- package/dist/ui/page-toolbar/{cmp.toolbar-switch-item.svelte.d.ts → cmp.toolbar-switch.svelte.d.ts} +2 -2
- package/dist/ui/page-toolbar/cmp.toolbar-toggle.svelte +14 -0
- package/dist/ui/page-toolbar/cmp.toolbar-toggle.svelte.d.ts +19 -0
- package/dist/ui/page-toolbar/cmp.toolbar-view-controls.svelte +51 -0
- package/dist/ui/page-toolbar/cmp.toolbar-view-controls.svelte.d.ts +27 -0
- package/dist/ui/page-toolbar/index.d.ts +12 -7
- package/dist/ui/page-toolbar/index.js +11 -6
- package/dist/ui/page-toolbar/reorderable-checkbox-list-localization.d.ts +5 -0
- package/dist/ui/page-toolbar/reorderable-checkbox-list-localization.js +17 -0
- package/dist/ui/page-toolbar/toolbar-filter-select-localization.d.ts +5 -0
- package/dist/ui/page-toolbar/toolbar-filter-select-localization.js +20 -0
- package/dist/ui/page-toolbar/toolbar-sort-select-localization.d.ts +3 -0
- package/dist/ui/page-toolbar/toolbar-sort-select-localization.js +9 -0
- package/dist/ui/page-toolbar/toolbar-view-controls-localization.d.ts +5 -0
- package/dist/ui/page-toolbar/toolbar-view-controls-localization.js +17 -0
- package/dist/ui/page-toolbar/types.d.ts +1 -1
- package/dist/ui/select/index.d.ts +1 -0
- package/dist/ui/select/index.js +1 -0
- package/dist/ui/select/select-listbox.svelte +11 -5
- package/dist/ui/select/select-listbox.svelte.d.ts +1 -1
- package/dist/ui/table/_table-styles.scss +156 -0
- package/dist/ui/table/cmp.table-draggable.svelte +338 -0
- package/dist/ui/table/cmp.table-draggable.svelte.d.ts +79 -0
- package/dist/ui/table/cmp.table.svelte +96 -265
- package/dist/ui/table/cmp.table.svelte.d.ts +16 -8
- package/dist/ui/table/index.d.ts +1 -0
- package/dist/ui/table/index.js +1 -0
- package/dist/ui/table/table-cells/index.d.ts +1 -12
- package/dist/ui/table/table-cells/index.js +1 -12
- package/dist/ui/table/table-cells/table-cell.svelte +77 -0
- package/dist/ui/table/table-cells/{table-select-cell.svelte.d.ts → table-cell.svelte.d.ts} +12 -6
- package/dist/ui/table/table-column-models.svelte.d.ts +1 -2
- package/dist/ui/table/table-column-models.svelte.js +0 -1
- package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte +20 -47
- package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte.d.ts +3 -7
- package/dist/ui/table/table-columns-manager/table-columns-manager-localization.d.ts +1 -1
- package/dist/ui/table/table-columns-manager/table-columns-manager-localization.js +7 -7
- package/dist/ui/table/table-localization.d.ts +0 -2
- package/dist/ui/table/table-localization.js +0 -14
- package/dist/ui/table/table-model.svelte.d.ts +2 -3
- package/dist/ui/table/table-model.svelte.js +5 -35
- package/dist/ui/table/table-view.svelte.d.ts +14 -0
- package/dist/ui/table/table-view.svelte.js +32 -0
- package/dist/ui/table/types.d.ts +5 -28
- package/dist/ui/toggle/cmp.toggle.svelte +32 -26
- package/dist/ui/toggle/cmp.toggle.svelte.d.ts +2 -0
- package/dist/ui/tree/cmp.tree-node-view.svelte +16 -10
- package/dist/ui/tree/cmp.tree-node-view.svelte.d.ts +2 -2
- package/dist/ui/tree/cmp.tree.svelte +14 -30
- package/dist/ui/tree/cmp.tree.svelte.d.ts +5 -5
- package/dist/ui/tree/tree-keyboard.svelte.d.ts +9 -0
- package/dist/ui/tree/tree-keyboard.svelte.js +107 -0
- package/dist/ui/tree/tree-node.svelte.d.ts +7 -3
- package/dist/ui/tree/tree-node.svelte.js +32 -16
- package/package.json +1 -1
- package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte +0 -153
- package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte.d.ts +0 -20
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte +0 -19
- package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte.d.ts +0 -12
- package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte +0 -42
- package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte.d.ts +0 -20
- package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte +0 -57
- package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte.d.ts +0 -19
- package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte +0 -16
- package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte.d.ts +0 -12
- package/dist/ui/table/table-cells/table-select-cell.svelte +0 -28
- package/dist/ui/table/table-cells/table-text-input-cell.svelte +0 -69
- package/dist/ui/table/table-cells/table-text-input-cell.svelte.d.ts +0 -38
- package/dist/ui/tree/tree-navigation.svelte.d.ts +0 -14
- package/dist/ui/tree/tree-navigation.svelte.js +0 -99
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
<script lang="ts">const { title, children, footer } = $props();
|
|
2
|
-
export {};
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<div class="toolbar-panel">
|
|
6
|
-
<div class="toolbar-panel__title">{title}</div>
|
|
7
|
-
<div class="toolbar-panel__body">
|
|
8
|
-
{@render children()}
|
|
9
|
-
{#if footer}
|
|
10
|
-
<div class="toolbar-panel__divider"></div>
|
|
11
|
-
{@render footer()}
|
|
12
|
-
{/if}
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<!--
|
|
17
|
-
@component
|
|
18
|
-
A panel container used inside toolbar dropdowns. Provides a title, body area, and optional footer.
|
|
19
|
-
|
|
20
|
-
### CSS Custom Properties
|
|
21
|
-
| Property | Description | Default |
|
|
22
|
-
|---|---|---|
|
|
23
|
-
| `--sc-kit--toolbar-panel--width` | Panel width | `21.875rem` |
|
|
24
|
-
| `--sc-kit--toolbar-panel--title--color` | Title text color | `var(--sc-kit--color--text--primary)` |
|
|
25
|
-
| `--sc-kit--toolbar-panel--divider--color` | Divider line color | `var(--sc-kit--color--border)` |
|
|
26
|
-
-->
|
|
27
|
-
|
|
28
|
-
<style>.toolbar-panel {
|
|
29
|
-
--_toolbar-panel--width: var(--sc-kit--toolbar-panel--width, 21.875rem);
|
|
30
|
-
--_toolbar-panel--title--color: var(--sc-kit--toolbar-panel--title--color, var(--sc-kit--color--text--primary));
|
|
31
|
-
--_toolbar-panel--divider--color: var(--sc-kit--toolbar-panel--divider--color, var(--sc-kit--color--border));
|
|
32
|
-
width: var(--_toolbar-panel--width);
|
|
33
|
-
padding: var(--sc-kit--space--6);
|
|
34
|
-
}
|
|
35
|
-
.toolbar-panel__title {
|
|
36
|
-
font-size: var(--sc-kit--font-size--md);
|
|
37
|
-
font-weight: var(--sc-kit--font-weight--semibold);
|
|
38
|
-
line-height: var(--sc-kit--line-height--md);
|
|
39
|
-
color: var(--_toolbar-panel--title--color);
|
|
40
|
-
margin-bottom: var(--sc-kit--space--2);
|
|
41
|
-
min-width: 0;
|
|
42
|
-
text-overflow: ellipsis;
|
|
43
|
-
max-width: 100%;
|
|
44
|
-
white-space: nowrap;
|
|
45
|
-
overflow: hidden;
|
|
46
|
-
}
|
|
47
|
-
.toolbar-panel__body {
|
|
48
|
-
display: flex;
|
|
49
|
-
flex-direction: column;
|
|
50
|
-
gap: var(--sc-kit--space--4);
|
|
51
|
-
padding-block: var(--sc-kit--space--2);
|
|
52
|
-
}
|
|
53
|
-
.toolbar-panel__divider {
|
|
54
|
-
height: 1px;
|
|
55
|
-
background: var(--_toolbar-panel--divider--color);
|
|
56
|
-
margin: var(--sc-kit--space--1) var(--sc-kit--space--2);
|
|
57
|
-
}</style>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
|
-
type Props = {
|
|
3
|
-
title: string;
|
|
4
|
-
children: Snippet;
|
|
5
|
-
footer?: Snippet;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* A panel container used inside toolbar dropdowns. Provides a title, body area, and optional footer.
|
|
9
|
-
*
|
|
10
|
-
* ### CSS Custom Properties
|
|
11
|
-
* | Property | Description | Default |
|
|
12
|
-
* |---|---|---|
|
|
13
|
-
* | `--sc-kit--toolbar-panel--width` | Panel width | `21.875rem` |
|
|
14
|
-
* | `--sc-kit--toolbar-panel--title--color` | Title text color | `var(--sc-kit--color--text--primary)` |
|
|
15
|
-
* | `--sc-kit--toolbar-panel--divider--color` | Divider line color | `var(--sc-kit--color--border)` |
|
|
16
|
-
*/
|
|
17
|
-
declare const Cmp: import("svelte").Component<Props, {}, "">;
|
|
18
|
-
type Cmp = ReturnType<typeof Cmp>;
|
|
19
|
-
export default Cmp;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<script lang="ts">import { Toggle } from '../toggle';
|
|
2
|
-
const { checked, children, on } = $props();
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<div class="toolbar-toggle-item">
|
|
6
|
-
<Toggle checked={checked} label={children} layout="spread" on={{ change: (value) => on?.change?.(value) }} />
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<!--
|
|
10
|
-
@component
|
|
11
|
-
A toggle item for toolbar panels. Wraps the kit Toggle with toolbar-appropriate padding.
|
|
12
|
-
-->
|
|
13
|
-
|
|
14
|
-
<style>.toolbar-toggle-item {
|
|
15
|
-
padding: var(--sc-kit--space--1) var(--sc-kit--space--2);
|
|
16
|
-
}</style>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
|
-
type Props = {
|
|
3
|
-
checked: boolean;
|
|
4
|
-
children: Snippet;
|
|
5
|
-
on?: {
|
|
6
|
-
change?: (value: boolean) => void;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
/** A toggle item for toolbar panels. Wraps the kit Toggle with toolbar-appropriate padding. */
|
|
10
|
-
declare const Cmp: import("svelte").Component<Props, {}, "">;
|
|
11
|
-
type Cmp = ReturnType<typeof Cmp>;
|
|
12
|
-
export default Cmp;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends {id: string}">import { Singleselect } from '../../select';
|
|
2
|
-
let { item, column } = $props();
|
|
3
|
-
const getValueForColumn = (column, item) => (column.valueFactory ? column.valueFactory(item) : item[column.id]);
|
|
4
|
-
const onSelected = (value) => {
|
|
5
|
-
column.onSelected(item, value);
|
|
6
|
-
item = item;
|
|
7
|
-
};
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
{#if !column.visibilityFactory || column.visibilityFactory(item)}
|
|
11
|
-
{#if column.clearable}
|
|
12
|
-
<Singleselect
|
|
13
|
-
clearable
|
|
14
|
-
placeholder={column.placeholder || ' '}
|
|
15
|
-
value={getValueForColumn(column, item)}
|
|
16
|
-
options={column.optionsFactory(item)}
|
|
17
|
-
disabled={(column.disabledFactory && column.disabledFactory(item)) || false}
|
|
18
|
-
on={{ change: (v) => onSelected(v) }} />
|
|
19
|
-
{:else}
|
|
20
|
-
<Singleselect
|
|
21
|
-
clearable={false}
|
|
22
|
-
placeholder={column.placeholder || ' '}
|
|
23
|
-
value={getValueForColumn(column, item)}
|
|
24
|
-
options={column.optionsFactory(item)}
|
|
25
|
-
disabled={(column.disabledFactory && column.disabledFactory(item)) || false}
|
|
26
|
-
on={{ change: (v) => onSelected(v) }} />
|
|
27
|
-
{/if}
|
|
28
|
-
{/if}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends {id: string}">import { Input } from '../../input';
|
|
2
|
-
import { LineClamp } from '../../line-clamp';
|
|
3
|
-
import { NumeralInput } from '../../numeral-input';
|
|
4
|
-
import { untrack } from 'svelte';
|
|
5
|
-
let { item, column } = $props();
|
|
6
|
-
let errorText = $state('');
|
|
7
|
-
const onInput = async (val) => {
|
|
8
|
-
item[column.id] = val === null ? '' : String(val);
|
|
9
|
-
await validate();
|
|
10
|
-
if (column.onInput) {
|
|
11
|
-
column.onInput(item, item[column.id]);
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
const validate = async () => {
|
|
15
|
-
if (!column.validationSchema) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
try {
|
|
19
|
-
await column.validationSchema.validate(item[column.id]);
|
|
20
|
-
errorText = '';
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
const err = error;
|
|
24
|
-
if (err.name !== 'ValidationError') {
|
|
25
|
-
throw error;
|
|
26
|
-
}
|
|
27
|
-
errorText = err.message;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
finally {
|
|
31
|
-
if (column.onValidated) {
|
|
32
|
-
column.onValidated(item, errorText);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
$effect(() => {
|
|
37
|
-
untrack(() => void validate());
|
|
38
|
-
});
|
|
39
|
-
</script>
|
|
40
|
-
|
|
41
|
-
<div class="table-text-input-cell" class:table-text-input-cell--errored={!!errorText}>
|
|
42
|
-
{#if column.inputType === 'number'}
|
|
43
|
-
<NumeralInput clearable value={item[column.id]} on={{ input: onInput }} />
|
|
44
|
-
{:else}
|
|
45
|
-
<Input value={item[column.id]} on={{ input: onInput }} />
|
|
46
|
-
{/if}
|
|
47
|
-
{#if errorText}
|
|
48
|
-
<div class="table-text-input-cell__error">
|
|
49
|
-
<LineClamp maxLines={2}>{errorText}</LineClamp>
|
|
50
|
-
</div>
|
|
51
|
-
{/if}
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<style>.table-text-input-cell {
|
|
55
|
-
position: relative;
|
|
56
|
-
font-size: var(--_table--cell--font-size);
|
|
57
|
-
padding-top: 1.5em;
|
|
58
|
-
margin-bottom: 1.5em;
|
|
59
|
-
}
|
|
60
|
-
.table-text-input-cell__error {
|
|
61
|
-
position: absolute;
|
|
62
|
-
top: calc(100% + 0.1em);
|
|
63
|
-
left: 0;
|
|
64
|
-
right: 0;
|
|
65
|
-
display: block;
|
|
66
|
-
color: var(--sc-kit--color--danger);
|
|
67
|
-
font-size: 0.6875rem;
|
|
68
|
-
font-weight: 400;
|
|
69
|
-
}</style>
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { ITableTextInputColumn } from '../types';
|
|
2
|
-
declare function $$render<T extends {
|
|
3
|
-
id: string;
|
|
4
|
-
}>(): {
|
|
5
|
-
props: {
|
|
6
|
-
item: any;
|
|
7
|
-
column: ITableTextInputColumn<T>;
|
|
8
|
-
};
|
|
9
|
-
exports: {};
|
|
10
|
-
bindings: "";
|
|
11
|
-
slots: {};
|
|
12
|
-
events: {};
|
|
13
|
-
};
|
|
14
|
-
declare class __sveltets_Render<T extends {
|
|
15
|
-
id: string;
|
|
16
|
-
}> {
|
|
17
|
-
props(): ReturnType<typeof $$render<T>>['props'];
|
|
18
|
-
events(): ReturnType<typeof $$render<T>>['events'];
|
|
19
|
-
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
20
|
-
bindings(): "";
|
|
21
|
-
exports(): {};
|
|
22
|
-
}
|
|
23
|
-
interface $$IsomorphicComponent {
|
|
24
|
-
new <T extends {
|
|
25
|
-
id: string;
|
|
26
|
-
}>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
27
|
-
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
28
|
-
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
29
|
-
<T extends {
|
|
30
|
-
id: string;
|
|
31
|
-
}>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
32
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
33
|
-
}
|
|
34
|
-
declare const TableTextInputCell: $$IsomorphicComponent;
|
|
35
|
-
type TableTextInputCell<T extends {
|
|
36
|
-
id: string;
|
|
37
|
-
}> = InstanceType<typeof TableTextInputCell<T>>;
|
|
38
|
-
export default TableTextInputCell;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { TreeNode } from './tree-node.svelte';
|
|
2
|
-
export declare class TreeNavigation {
|
|
3
|
-
activeId: string | null;
|
|
4
|
-
hasFocus: boolean;
|
|
5
|
-
private _getRoots;
|
|
6
|
-
constructor(getRoots: () => readonly TreeNode[]);
|
|
7
|
-
itemId(node: TreeNode): string;
|
|
8
|
-
focus(): void;
|
|
9
|
-
blur(): void;
|
|
10
|
-
setActive(node: TreeNode): void;
|
|
11
|
-
ensureActive(): void;
|
|
12
|
-
handleKeydown(e: KeyboardEvent): void;
|
|
13
|
-
private _visibleNodes;
|
|
14
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
export class TreeNavigation {
|
|
2
|
-
activeId = $state(null);
|
|
3
|
-
hasFocus = $state(false);
|
|
4
|
-
_getRoots;
|
|
5
|
-
constructor(getRoots) {
|
|
6
|
-
this._getRoots = getRoots;
|
|
7
|
-
}
|
|
8
|
-
itemId(node) {
|
|
9
|
-
return `tree-item-${node.id}`;
|
|
10
|
-
}
|
|
11
|
-
focus() {
|
|
12
|
-
this.hasFocus = true;
|
|
13
|
-
this.ensureActive();
|
|
14
|
-
}
|
|
15
|
-
blur() {
|
|
16
|
-
this.hasFocus = false;
|
|
17
|
-
}
|
|
18
|
-
setActive(node) {
|
|
19
|
-
this.activeId = node.id;
|
|
20
|
-
}
|
|
21
|
-
ensureActive() {
|
|
22
|
-
const visible = this._visibleNodes();
|
|
23
|
-
if (this.activeId !== null && visible.some((n) => n.id === this.activeId)) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const selected = visible.find((n) => n.selected);
|
|
27
|
-
this.activeId = (selected ?? visible[0])?.id ?? null;
|
|
28
|
-
}
|
|
29
|
-
handleKeydown(e) {
|
|
30
|
-
const visible = this._visibleNodes();
|
|
31
|
-
if (!visible.length) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const index = visible.findIndex((n) => n.id === this.activeId);
|
|
35
|
-
const current = index < 0 ? null : visible[index];
|
|
36
|
-
switch (e.key) {
|
|
37
|
-
case 'ArrowDown':
|
|
38
|
-
e.preventDefault();
|
|
39
|
-
this.activeId = visible[index < 0 ? 0 : Math.min(index + 1, visible.length - 1)].id;
|
|
40
|
-
break;
|
|
41
|
-
case 'ArrowUp':
|
|
42
|
-
e.preventDefault();
|
|
43
|
-
this.activeId = visible[index <= 0 ? 0 : index - 1].id;
|
|
44
|
-
break;
|
|
45
|
-
case 'ArrowRight':
|
|
46
|
-
e.preventDefault();
|
|
47
|
-
if (!current) {
|
|
48
|
-
this.activeId = visible[0].id;
|
|
49
|
-
}
|
|
50
|
-
else if (current.children.length) {
|
|
51
|
-
if (current.expanded) {
|
|
52
|
-
this.activeId = current.children[0].id;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
current.expand();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
break;
|
|
59
|
-
case 'ArrowLeft':
|
|
60
|
-
e.preventDefault();
|
|
61
|
-
if (!current) {
|
|
62
|
-
this.activeId = visible[0].id;
|
|
63
|
-
}
|
|
64
|
-
else if (current.expanded && current.children.length) {
|
|
65
|
-
current.collapse();
|
|
66
|
-
}
|
|
67
|
-
else if (current.parent && visible.includes(current.parent)) {
|
|
68
|
-
this.activeId = current.parent.id;
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
case 'Home':
|
|
72
|
-
e.preventDefault();
|
|
73
|
-
this.activeId = visible[0].id;
|
|
74
|
-
break;
|
|
75
|
-
case 'End':
|
|
76
|
-
e.preventDefault();
|
|
77
|
-
this.activeId = visible[visible.length - 1].id;
|
|
78
|
-
break;
|
|
79
|
-
case 'Enter':
|
|
80
|
-
case ' ':
|
|
81
|
-
e.preventDefault();
|
|
82
|
-
current?.select({ explicitly: true });
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
_visibleNodes() {
|
|
87
|
-
const result = [];
|
|
88
|
-
const walk = (nodes) => {
|
|
89
|
-
for (const node of nodes) {
|
|
90
|
-
result.push(node);
|
|
91
|
-
if (node.expanded && node.children.length) {
|
|
92
|
-
walk(node.children);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
walk(this._getRoots());
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
}
|