Skip to content

Commit 88a9bb6

Browse files
authored
Added at function to collections (#2150)
1 parent 8a0bd83 commit 88a9bb6

File tree

5 files changed

+23
-0
lines changed

5 files changed

+23
-0
lines changed

packages/@react-stately/grid/src/GridCollection.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,9 @@ export class GridCollection<T> implements IGridCollection<T> {
150150
getItem(key: Key) {
151151
return this.keyMap.get(key);
152152
}
153+
154+
at(idx: number) {
155+
const keys = [...this.getKeys()];
156+
return this.getItem(keys[idx]);
157+
}
153158
}

packages/@react-stately/list/src/ListCollection.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,9 @@ export class ListCollection<T> implements Collection<Node<T>> {
9494
getItem(key: Key) {
9595
return this.keyMap.get(key);
9696
}
97+
98+
at(idx: number) {
99+
const keys = [...this.getKeys()];
100+
return this.getItem(keys[idx]);
101+
}
97102
}

packages/@react-stately/table/src/TableCollection.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,4 +272,9 @@ export class TableCollection<T> extends GridCollection<T> {
272272
getItem(key: Key) {
273273
return this.keyMap.get(key);
274274
}
275+
276+
at(idx: number) {
277+
const keys = [...this.getKeys()];
278+
return this.getItem(keys[idx]);
279+
}
275280
}

packages/@react-stately/tree/src/TreeCollection.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,9 @@ export class TreeCollection<T> implements Collection<Node<T>> {
9595
getItem(key: Key) {
9696
return this.keyMap.get(key);
9797
}
98+
99+
at(idx: number) {
100+
const keys = [...this.getKeys()];
101+
return this.getItem(keys[idx]);
102+
}
98103
}

packages/@react-types/shared/src/collections.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ export interface Collection<T> extends Iterable<T> {
130130
/** Get an item by its key. */
131131
getItem(key: Key): T,
132132

133+
/** Get an item by the index of its key. */
134+
at(idx: number): T,
135+
133136
/** Get the key that comes before the given key in the collection. */
134137
getKeyBefore(key: Key): Key | null,
135138

0 commit comments

Comments
 (0)