@bccampus/ui-components 0.4.0 → 0.4.2
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/AbstractFocusProvider-CxvlcEki.js +29 -0
- package/dist/AbstractSelectionProvider-BtaROstC.js +30 -0
- package/dist/CompositeDataItem-DuHOHCWy.js +158 -0
- package/dist/ListboxFocusProvider.d.ts +149 -0
- package/dist/ListboxFocusProvider.js +53 -0
- package/dist/MultipleSelectionProvider.d.ts +141 -0
- package/dist/MultipleSelectionProvider.js +19 -0
- package/dist/SingleSelectionProvider.d.ts +141 -0
- package/dist/SingleSelectionProvider.js +23 -0
- package/dist/composite-component-DSUbd1XS.js +122 -0
- package/dist/composite.d.ts +108 -51
- package/dist/composite.js +57 -447
- package/dist/icon-generator-tuhuqdpL.js +76 -0
- package/dist/icon-generator.d.ts +11 -4
- package/dist/icon-generator.js +4 -74
- package/dist/listbox.d.ts +171 -0
- package/dist/listbox.js +76 -0
- package/dist/masked-image-generator.js +7 -7
- package/dist/ui-components.js +5 -5
- package/package.json +5 -1
- package/src/components/ui/composite/CompositeData.ts +22 -114
- package/src/components/ui/composite/FocusProvider/AbstractFocusProvider.ts +83 -0
- package/src/components/ui/composite/FocusProvider/ListboxFocusProvider.ts +74 -0
- package/src/components/ui/composite/SelectionProvider/AbstractSelectionProvider.ts +45 -0
- package/src/components/ui/composite/SelectionProvider/MultipleSelectionProvider.ts +28 -0
- package/src/components/ui/composite/SelectionProvider/SingleSelectionProvider.ts +37 -0
- package/src/components/ui/composite/composite-component-item.tsx +12 -10
- package/src/components/ui/composite/composite-component.tsx +39 -68
- package/src/components/ui/composite/index.ts +4 -1
- package/src/components/ui/composite/listbox.tsx +61 -0
- package/src/components/ui/composite/types.ts +51 -30
- package/src/components/ui/icon-generator/index.ts +2 -0
- package/src/hooks/use-keyboard-event.ts +31 -42
- package/vite.config.ts +6 -2
- package/src/components/ui/composite/composite-data-context.tsx +0 -31
- /package/dist/{igenerate-tiles.d.ts → generate-tiles.d.ts} +0 -0
- /package/dist/{igenerate-tiles.js → generate-tiles.js} +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { PreinitializedMapStore } from 'nanostores';
|
|
2
|
+
import { PreinitializedWritableAtom } from 'nanostores';
|
|
3
|
+
|
|
4
|
+
declare abstract class AbstractFocusProvider<T extends object> implements FocusProvider {
|
|
5
|
+
protected data: CompositeData<T>;
|
|
6
|
+
protected dataOptions: CompositeDataOptions<T>;
|
|
7
|
+
firstFocusableItem: CompositeDataItem<T> | null;
|
|
8
|
+
lastFocusableItem: CompositeDataItem<T> | null;
|
|
9
|
+
focusedItem: PreinitializedWritableAtom<CompositeDataItem<T> | null>;
|
|
10
|
+
init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
|
|
11
|
+
isFocusable(itemAtom: CompositeDataItem<T>): boolean;
|
|
12
|
+
focus(itemKey: CompositeItemKey): void;
|
|
13
|
+
focus(item: CompositeDataItem<T>): void;
|
|
14
|
+
abstract setFocusPointers(): readonly [first: CompositeDataItem<T> | null, last: CompositeDataItem<T> | null];
|
|
15
|
+
abstract focusUp(): void;
|
|
16
|
+
abstract focusDown(): void;
|
|
17
|
+
abstract focusLeft(): void;
|
|
18
|
+
abstract focusRight(): void;
|
|
19
|
+
abstract focusPageUp(): void;
|
|
20
|
+
abstract focesPageDown(): void;
|
|
21
|
+
abstract focusToFirst(): void;
|
|
22
|
+
abstract focusToLast(): void;
|
|
23
|
+
abstract focusToFirstInRow(): void;
|
|
24
|
+
abstract focusToLastInRow(): void;
|
|
25
|
+
abstract focusToTypeAheadMatch(): void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
declare abstract class AbstractSelectionProvider<T extends object> {
|
|
29
|
+
protected data: CompositeData<T>;
|
|
30
|
+
protected dataOptions: CompositeDataOptions<T>;
|
|
31
|
+
selectedKeys: PreinitializedWritableAtom<Set<CompositeItemKey>>;
|
|
32
|
+
init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
|
|
33
|
+
abstract select(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
34
|
+
abstract select(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
35
|
+
abstract select(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
|
|
36
|
+
abstract deselect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
37
|
+
abstract deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
38
|
+
abstract deselect(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
|
|
39
|
+
toggleSelect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
40
|
+
toggleSelect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
declare class CompositeData<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
44
|
+
#private;
|
|
45
|
+
lookup: Map<CompositeItemKey, CompositeDataItem<T>>;
|
|
46
|
+
focusProvider: AbstractFocusProvider<T>;
|
|
47
|
+
selectionProvider?: AbstractSelectionProvider<T>;
|
|
48
|
+
disabledKeys: Set<CompositeItemKey>;
|
|
49
|
+
root: CompositeDataItem<T>;
|
|
50
|
+
constructor(items: T[], providerOptions: CompositeProviderOptions<T>, options?: CompositeOptions);
|
|
51
|
+
[Symbol.iterator](): Iterator<CompositeDataItem<T>>;
|
|
52
|
+
toJSON(): T[];
|
|
53
|
+
init(items: T[]): void;
|
|
54
|
+
item(key: CompositeItemKey): CompositeDataItem<T> | undefined;
|
|
55
|
+
descendants(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
|
|
56
|
+
ancestors(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
|
|
57
|
+
updateItem(key: CompositeItemKey, data: Partial<T> | ((item: T) => Partial<T>)): void;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
declare class CompositeDataItem<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
61
|
+
#private;
|
|
62
|
+
parent: CompositeDataItem<T> | null;
|
|
63
|
+
children?: CompositeDataItem<T>[];
|
|
64
|
+
level: number;
|
|
65
|
+
data: PreinitializedMapStore<T>;
|
|
66
|
+
state: PreinitializedMapStore<CompositeDataItemState>;
|
|
67
|
+
pointers: {
|
|
68
|
+
left?: CompositeItemKey;
|
|
69
|
+
right?: CompositeItemKey;
|
|
70
|
+
up?: CompositeItemKey;
|
|
71
|
+
down?: CompositeItemKey;
|
|
72
|
+
};
|
|
73
|
+
childrenProp: string;
|
|
74
|
+
constructor(item: T, options: CompositeDataItemOptions<T>, parent: CompositeDataItem<T> | null);
|
|
75
|
+
get key(): CompositeItemKey;
|
|
76
|
+
[Symbol.iterator](): Iterator<CompositeDataItem<T>>;
|
|
77
|
+
toJSON(): T;
|
|
78
|
+
descendants(): CompositeDataItem<T>[];
|
|
79
|
+
ancestors(): CompositeDataItem<T>[];
|
|
80
|
+
toggleSelect(recursive?: boolean): void;
|
|
81
|
+
select(recursive?: boolean): CompositeItemKey[];
|
|
82
|
+
deselect(recursive?: boolean): CompositeItemKey[];
|
|
83
|
+
disable(recursive?: boolean): CompositeItemKey[];
|
|
84
|
+
enable(recursive?: boolean): CompositeItemKey[];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
declare type CompositeDataItemOptions<T> = CompositeDataPropGetters<T> & {
|
|
88
|
+
initialState?: CompositeDataItemState;
|
|
89
|
+
itemChildrenProp: string;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
declare interface CompositeDataItemState {
|
|
93
|
+
focused: boolean;
|
|
94
|
+
selected: boolean;
|
|
95
|
+
disabled: boolean;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
declare type CompositeDataOptions<T> = Required<CompositeOptions> & CompositeDataPropGetters<T>;
|
|
99
|
+
|
|
100
|
+
declare interface CompositeDataPropGetters<T> {
|
|
101
|
+
getItemKey: (item: T) => CompositeItemKey;
|
|
102
|
+
getItemChildren: (item: T) => T[] | undefined;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare type CompositeItemKey = string | number;
|
|
106
|
+
|
|
107
|
+
declare interface CompositeOptions {
|
|
108
|
+
disabledKeys?: CompositeItemKey[];
|
|
109
|
+
selectedKeys?: CompositeItemKey[];
|
|
110
|
+
itemKeyProp?: string;
|
|
111
|
+
itemChildrenProp?: string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
declare interface CompositeProviderOptions<T extends object> {
|
|
115
|
+
focusProvider: AbstractFocusProvider<T>;
|
|
116
|
+
selectionProvider?: AbstractSelectionProvider<T>;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
declare interface FocusProvider {
|
|
120
|
+
focus(itemKey: CompositeItemKey): void;
|
|
121
|
+
focusUp(): void;
|
|
122
|
+
focusDown(): void;
|
|
123
|
+
focusLeft(): void;
|
|
124
|
+
focusRight(): void;
|
|
125
|
+
focusPageUp(): void;
|
|
126
|
+
focesPageDown(): void;
|
|
127
|
+
focusToFirst(): void;
|
|
128
|
+
focusToLast(): void;
|
|
129
|
+
focusToFirstInRow(): void;
|
|
130
|
+
focusToLastInRow(): void;
|
|
131
|
+
focusToTypeAheadMatch(): void;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export declare class SingleSelectionProvider<T extends object> extends AbstractSelectionProvider<T> {
|
|
135
|
+
select(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
136
|
+
select(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
137
|
+
deselect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
138
|
+
deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export { }
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { C as c } from "./CompositeDataItem-DuHOHCWy.js";
|
|
2
|
+
import { A as d, d as i } from "./AbstractSelectionProvider-BtaROstC.js";
|
|
3
|
+
class u extends d {
|
|
4
|
+
select(e, r = !1) {
|
|
5
|
+
const t = e ? e instanceof c ? e : this.data.lookup.get(e) : this.data.focusProvider.focusedItem.get();
|
|
6
|
+
if (!t) return;
|
|
7
|
+
this.selectedKeys.get().forEach((a) => {
|
|
8
|
+
const o = this.data.lookup.get(a);
|
|
9
|
+
o && o.deselect(!1);
|
|
10
|
+
});
|
|
11
|
+
const s = t.select(!1);
|
|
12
|
+
this.selectedKeys.set(new Set(s));
|
|
13
|
+
}
|
|
14
|
+
deselect(e, r = !1) {
|
|
15
|
+
const t = e ? e instanceof c ? e : this.data.lookup.get(e) : this.data.focusProvider.focusedItem.get();
|
|
16
|
+
if (!t) return;
|
|
17
|
+
const s = t.deselect(!1);
|
|
18
|
+
this.selectedKeys.set(i(this.selectedKeys.get(), s));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
u as SingleSelectionProvider
|
|
23
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { jsxs as h, jsx as b } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as S, useCallback as $, useSyncExternalStore as C, useMemo as g, useId as P, useImperativeHandle as m } from "react";
|
|
3
|
+
function w(o, r, e) {
|
|
4
|
+
let t = new Set(r).add(void 0);
|
|
5
|
+
return o.listen((s, l, n) => {
|
|
6
|
+
t.has(n) && e(s, l, n);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
let f = (o, r) => (e) => {
|
|
10
|
+
o.current !== e && (o.current = e, r());
|
|
11
|
+
};
|
|
12
|
+
function R(o, { keys: r, deps: e = [o, r] } = {}) {
|
|
13
|
+
let t = S();
|
|
14
|
+
t.current = o.get();
|
|
15
|
+
let s = $((n) => (f(t, n)(o.value), r?.length > 0 ? w(o, r, f(t, n)) : o.listen(f(t, n))), e), l = () => t.current;
|
|
16
|
+
return C(s, l, l);
|
|
17
|
+
}
|
|
18
|
+
function v({
|
|
19
|
+
id: o,
|
|
20
|
+
className: r,
|
|
21
|
+
item: e,
|
|
22
|
+
role: t,
|
|
23
|
+
itemMouseEventHandler: s,
|
|
24
|
+
itemKeyboardEventHandler: l,
|
|
25
|
+
render: n
|
|
26
|
+
}) {
|
|
27
|
+
const i = R(e.data), u = R(e.state), c = g(() => u.disabled ? {} : {
|
|
28
|
+
mouseEventHandler: () => s?.(e),
|
|
29
|
+
keyboardEventHandler: () => l?.(e)
|
|
30
|
+
}, [u.disabled, e, l, s]);
|
|
31
|
+
return /* @__PURE__ */ h(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
id: o,
|
|
35
|
+
role: t,
|
|
36
|
+
"aria-disabled": u.disabled,
|
|
37
|
+
"data-key": e.key,
|
|
38
|
+
tabIndex: u.disabled ? void 0 : u.focused ? 0 : -1,
|
|
39
|
+
className: r,
|
|
40
|
+
children: [
|
|
41
|
+
n({ data: i, key: e.key, level: e.level }, u, c),
|
|
42
|
+
e.children && e.children.length > 0 && [...e.children].map((d) => /* @__PURE__ */ b(
|
|
43
|
+
v,
|
|
44
|
+
{
|
|
45
|
+
id: `${o}-${e.key}`,
|
|
46
|
+
role: t,
|
|
47
|
+
item: d,
|
|
48
|
+
render: n,
|
|
49
|
+
className: r,
|
|
50
|
+
itemMouseEventHandler: s,
|
|
51
|
+
itemKeyboardEventHandler: l
|
|
52
|
+
},
|
|
53
|
+
d.key
|
|
54
|
+
))
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
function j(o) {
|
|
60
|
+
return o ?? P();
|
|
61
|
+
}
|
|
62
|
+
const q = {
|
|
63
|
+
listbox: {
|
|
64
|
+
rootRole: "listbox",
|
|
65
|
+
groupRole: "group",
|
|
66
|
+
itemRole: "option"
|
|
67
|
+
},
|
|
68
|
+
grid: {
|
|
69
|
+
rootRole: "grid",
|
|
70
|
+
groupRole: "rowgroup",
|
|
71
|
+
itemRole: "row"
|
|
72
|
+
},
|
|
73
|
+
custom: void 0
|
|
74
|
+
};
|
|
75
|
+
function B({
|
|
76
|
+
data: o,
|
|
77
|
+
variant: r,
|
|
78
|
+
rootRole: e,
|
|
79
|
+
itemRole: t,
|
|
80
|
+
groupRole: s,
|
|
81
|
+
renderItem: l,
|
|
82
|
+
className: n,
|
|
83
|
+
itemClassName: i,
|
|
84
|
+
ref: u,
|
|
85
|
+
handleRef: c,
|
|
86
|
+
id: d,
|
|
87
|
+
itemMouseEventHandler: x,
|
|
88
|
+
itemKeyboardEventHandler: y,
|
|
89
|
+
...I
|
|
90
|
+
}) {
|
|
91
|
+
const k = j(d);
|
|
92
|
+
m(
|
|
93
|
+
c,
|
|
94
|
+
() => ({
|
|
95
|
+
focusProvider: o.focusProvider,
|
|
96
|
+
selectionProvider: o.selectionProvider
|
|
97
|
+
}),
|
|
98
|
+
[o]
|
|
99
|
+
);
|
|
100
|
+
const a = g(
|
|
101
|
+
() => q[r] ?? { rootRole: e, groupRole: s, itemRole: t },
|
|
102
|
+
[s, t, e, r]
|
|
103
|
+
);
|
|
104
|
+
return /* @__PURE__ */ b("div", { ref: u, id: k, className: n, tabIndex: -1, role: a.rootRole, ...I, children: [...o].map((p) => /* @__PURE__ */ b(
|
|
105
|
+
v,
|
|
106
|
+
{
|
|
107
|
+
className: i,
|
|
108
|
+
id: `${k}-${p.key}`,
|
|
109
|
+
role: a.itemRole,
|
|
110
|
+
groupRole: a.groupRole,
|
|
111
|
+
item: p,
|
|
112
|
+
render: l,
|
|
113
|
+
itemMouseEventHandler: x,
|
|
114
|
+
itemKeyboardEventHandler: y
|
|
115
|
+
},
|
|
116
|
+
p.key
|
|
117
|
+
)) });
|
|
118
|
+
}
|
|
119
|
+
export {
|
|
120
|
+
B as C,
|
|
121
|
+
v as a
|
|
122
|
+
};
|
package/dist/composite.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AriaRole } from 'react';
|
|
1
2
|
import { JSX } from 'react/jsx-runtime';
|
|
2
3
|
import { KeyboardEventHandler } from 'react';
|
|
3
4
|
import { MouseEventHandler } from 'react';
|
|
@@ -5,50 +6,76 @@ import { PreinitializedMapStore } from 'nanostores';
|
|
|
5
6
|
import { PreinitializedWritableAtom } from 'nanostores';
|
|
6
7
|
import { ReactNode } from 'react';
|
|
7
8
|
|
|
8
|
-
export declare
|
|
9
|
+
export declare abstract class AbstractFocusProvider<T extends object> implements FocusProvider {
|
|
10
|
+
protected data: CompositeData<T>;
|
|
11
|
+
protected dataOptions: CompositeDataOptions<T>;
|
|
12
|
+
firstFocusableItem: CompositeDataItem<T> | null;
|
|
13
|
+
lastFocusableItem: CompositeDataItem<T> | null;
|
|
14
|
+
focusedItem: PreinitializedWritableAtom<CompositeDataItem<T> | null>;
|
|
15
|
+
init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
|
|
16
|
+
isFocusable(itemAtom: CompositeDataItem<T>): boolean;
|
|
17
|
+
focus(itemKey: CompositeItemKey): void;
|
|
18
|
+
focus(item: CompositeDataItem<T>): void;
|
|
19
|
+
abstract setFocusPointers(): readonly [first: CompositeDataItem<T> | null, last: CompositeDataItem<T> | null];
|
|
20
|
+
abstract focusUp(): void;
|
|
21
|
+
abstract focusDown(): void;
|
|
22
|
+
abstract focusLeft(): void;
|
|
23
|
+
abstract focusRight(): void;
|
|
24
|
+
abstract focusPageUp(): void;
|
|
25
|
+
abstract focesPageDown(): void;
|
|
26
|
+
abstract focusToFirst(): void;
|
|
27
|
+
abstract focusToLast(): void;
|
|
28
|
+
abstract focusToFirstInRow(): void;
|
|
29
|
+
abstract focusToLastInRow(): void;
|
|
30
|
+
abstract focusToTypeAheadMatch(): void;
|
|
31
|
+
}
|
|
9
32
|
|
|
10
|
-
export declare
|
|
33
|
+
export declare abstract class AbstractSelectionProvider<T extends object> {
|
|
34
|
+
protected data: CompositeData<T>;
|
|
35
|
+
protected dataOptions: CompositeDataOptions<T>;
|
|
36
|
+
selectedKeys: PreinitializedWritableAtom<Set<CompositeItemKey>>;
|
|
37
|
+
init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
|
|
38
|
+
abstract select(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
39
|
+
abstract select(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
40
|
+
abstract select(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
|
|
41
|
+
abstract deselect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
42
|
+
abstract deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
43
|
+
abstract deselect(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
|
|
44
|
+
toggleSelect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
45
|
+
toggleSelect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
46
|
+
}
|
|
11
47
|
|
|
12
|
-
declare interface
|
|
13
|
-
data: T
|
|
14
|
-
|
|
48
|
+
export declare interface BaseCompositeProps<T extends object> extends React.ComponentPropsWithoutRef<"div"> {
|
|
49
|
+
data: CompositeData<T>;
|
|
50
|
+
className?: string;
|
|
51
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
52
|
+
handleRef?: React.Ref<CompositeHandle>;
|
|
53
|
+
renderItem: CompositeItemRenderFn<T>;
|
|
54
|
+
itemClassName?: string;
|
|
15
55
|
}
|
|
16
56
|
|
|
17
|
-
export declare function
|
|
57
|
+
export declare function CompositeComponent<T extends object>({ data, variant, rootRole, itemRole, groupRole, renderItem, className, itemClassName, ref, handleRef, id, itemMouseEventHandler, itemKeyboardEventHandler, ...props }: CompositeProps<T>): JSX.Element;
|
|
58
|
+
|
|
59
|
+
export declare function CompositeComponentItem<T extends object>({ id, className, item, role, itemMouseEventHandler, itemKeyboardEventHandler, render, }: CompositeItemProps<T>): JSX.Element;
|
|
18
60
|
|
|
19
|
-
declare class CompositeData<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
61
|
+
export declare class CompositeData<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
20
62
|
#private;
|
|
21
63
|
lookup: Map<CompositeItemKey, CompositeDataItem<T>>;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
disabledKeys:
|
|
25
|
-
selectedKeys: PreinitializedWritableAtom<Set<CompositeItemKey>>;
|
|
64
|
+
focusProvider: AbstractFocusProvider<T>;
|
|
65
|
+
selectionProvider?: AbstractSelectionProvider<T>;
|
|
66
|
+
disabledKeys: Set<CompositeItemKey>;
|
|
26
67
|
root: CompositeDataItem<T>;
|
|
27
|
-
constructor(items: T[], options?: CompositeOptions);
|
|
68
|
+
constructor(items: T[], providerOptions: CompositeProviderOptions<T>, options?: CompositeOptions);
|
|
28
69
|
[Symbol.iterator](): Iterator<CompositeDataItem<T>>;
|
|
29
70
|
toJSON(): T[];
|
|
30
71
|
init(items: T[]): void;
|
|
31
|
-
isFocusable(itemAtom: CompositeDataItem<T>): boolean;
|
|
32
|
-
getFirstFocusableItem(): CompositeDataItem<T> | undefined;
|
|
33
72
|
item(key: CompositeItemKey): CompositeDataItem<T> | undefined;
|
|
34
73
|
descendants(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
|
|
35
74
|
ancestors(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
|
|
36
|
-
focus(itemKey: CompositeItemKey): void;
|
|
37
|
-
focus(item: CompositeDataItem<T>): void;
|
|
38
|
-
toggleSelect(itemKey: CompositeItemKey, recursive?: boolean): void;
|
|
39
|
-
toggleSelect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
40
|
-
select(itemKey: CompositeItemKey, recursive?: boolean): void;
|
|
41
|
-
select(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
42
|
-
deselect(itemKey: CompositeItemKey, recursive?: boolean): void;
|
|
43
|
-
deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
44
|
-
disable(itemKey: CompositeItemKey, recursive?: boolean): void;
|
|
45
|
-
disable(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
46
|
-
enable(itemKey: CompositeItemKey, recursive?: boolean): void;
|
|
47
|
-
enable(item: CompositeDataItem<T>, recursive?: boolean): void;
|
|
48
75
|
updateItem(key: CompositeItemKey, data: Partial<T> | ((item: T) => Partial<T>)): void;
|
|
49
76
|
}
|
|
50
77
|
|
|
51
|
-
declare class CompositeDataItem<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
78
|
+
export declare class CompositeDataItem<T extends object> implements Iterable<CompositeDataItem<T>> {
|
|
52
79
|
#private;
|
|
53
80
|
parent: CompositeDataItem<T> | null;
|
|
54
81
|
children?: CompositeDataItem<T>[];
|
|
@@ -93,35 +120,29 @@ declare interface CompositeDataPropGetters<T> {
|
|
|
93
120
|
getItemChildren: (item: T) => T[] | undefined;
|
|
94
121
|
}
|
|
95
122
|
|
|
96
|
-
export declare interface
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
goLast: () => void;
|
|
100
|
-
goUp: () => void;
|
|
101
|
-
goDown: () => void;
|
|
102
|
-
goLeft: () => void;
|
|
103
|
-
goRight: () => void;
|
|
123
|
+
export declare interface CompositeEventHandlers {
|
|
124
|
+
mouseEventHandler?: MouseEventHandler<HTMLElement>;
|
|
125
|
+
keyboardEventHandler?: KeyboardEventHandler<HTMLElement>;
|
|
104
126
|
}
|
|
105
127
|
|
|
106
128
|
export declare interface CompositeHandle {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
select: () => void;
|
|
129
|
+
focusProvider: FocusProvider;
|
|
130
|
+
selectionProvider?: SelectionProvider;
|
|
110
131
|
}
|
|
111
132
|
|
|
112
|
-
export declare interface
|
|
113
|
-
|
|
114
|
-
|
|
133
|
+
export declare interface CompositeItemEventHandlerFunctions<T extends object> {
|
|
134
|
+
itemMouseEventHandler?: (itemAtom: CompositeDataItem<T>) => void;
|
|
135
|
+
itemKeyboardEventHandler?: (itemAtom: CompositeDataItem<T>) => void;
|
|
115
136
|
}
|
|
116
137
|
|
|
117
138
|
export declare type CompositeItemKey = string | number;
|
|
118
139
|
|
|
119
|
-
export declare interface CompositeItemProps<T extends object> {
|
|
140
|
+
export declare interface CompositeItemProps<T extends object> extends CompositeItemEventHandlerFunctions<T> {
|
|
120
141
|
id: string;
|
|
121
142
|
className?: string;
|
|
143
|
+
role?: AriaRole;
|
|
144
|
+
groupRole?: AriaRole;
|
|
122
145
|
item: CompositeDataItem<T>;
|
|
123
|
-
mouseEventHandler?: (itemAtom: CompositeDataItem<T>) => void;
|
|
124
|
-
keyboardEventHandler?: (itemAtom: CompositeDataItem<T>) => void;
|
|
125
146
|
remove?: () => void;
|
|
126
147
|
render: CompositeItemRenderFn<T>;
|
|
127
148
|
}
|
|
@@ -130,7 +151,7 @@ export declare type CompositeItemRenderFn<T extends object> = (item: {
|
|
|
130
151
|
data: T;
|
|
131
152
|
level: number;
|
|
132
153
|
key: CompositeItemKey;
|
|
133
|
-
}, state: CompositeDataItemState, eventHandlers:
|
|
154
|
+
}, state: CompositeDataItemState, eventHandlers: CompositeEventHandlers) => ReactNode;
|
|
134
155
|
|
|
135
156
|
export declare interface CompositeOptions {
|
|
136
157
|
disabledKeys?: CompositeItemKey[];
|
|
@@ -139,13 +160,49 @@ export declare interface CompositeOptions {
|
|
|
139
160
|
itemChildrenProp?: string;
|
|
140
161
|
}
|
|
141
162
|
|
|
142
|
-
export declare
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
163
|
+
export declare type CompositeProps<T extends object> = BaseCompositeProps<T> & CompositeItemEventHandlerFunctions<T> & CompositeRoles;
|
|
164
|
+
|
|
165
|
+
export declare interface CompositeProviderOptions<T extends object> {
|
|
166
|
+
focusProvider: AbstractFocusProvider<T>;
|
|
167
|
+
selectionProvider?: AbstractSelectionProvider<T>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export declare type CompositeRoles = {
|
|
171
|
+
variant: 'listbox';
|
|
172
|
+
rootRole?: never;
|
|
173
|
+
itemRole?: never;
|
|
174
|
+
groupRole?: never;
|
|
175
|
+
} | {
|
|
176
|
+
variant: 'grid';
|
|
177
|
+
rootRole?: never;
|
|
178
|
+
itemRole?: never;
|
|
179
|
+
groupRole?: never;
|
|
180
|
+
} | {
|
|
181
|
+
variant: 'custom';
|
|
182
|
+
rootRole: AriaRole;
|
|
183
|
+
itemRole: AriaRole;
|
|
184
|
+
groupRole: AriaRole;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
export declare interface FocusProvider {
|
|
188
|
+
focus(itemKey: CompositeItemKey): void;
|
|
189
|
+
focusUp(): void;
|
|
190
|
+
focusDown(): void;
|
|
191
|
+
focusLeft(): void;
|
|
192
|
+
focusRight(): void;
|
|
193
|
+
focusPageUp(): void;
|
|
194
|
+
focesPageDown(): void;
|
|
195
|
+
focusToFirst(): void;
|
|
196
|
+
focusToLast(): void;
|
|
197
|
+
focusToFirstInRow(): void;
|
|
198
|
+
focusToLastInRow(): void;
|
|
199
|
+
focusToTypeAheadMatch(): void;
|
|
147
200
|
}
|
|
148
201
|
|
|
149
|
-
export declare
|
|
202
|
+
export declare interface SelectionProvider {
|
|
203
|
+
select(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
204
|
+
deselect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
205
|
+
toggleSelect(itemKey?: CompositeItemKey, recursive?: boolean): void;
|
|
206
|
+
}
|
|
150
207
|
|
|
151
208
|
export { }
|