UNPKG

2.14 kBTypeScriptView Raw
1/*
2 * Copyright 2020 Adobe. All rights reserved.
3 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License. You may obtain a copy
5 * of the License at http://www.apache.org/licenses/LICENSE-2.0
6 *
7 * Unless required by applicable law or agreed to in writing, software distributed under
8 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9 * OF ANY KIND, either express or implied. See the License for the specific language
10 * governing permissions and limitations under the License.
11 */
12
13import {Key} from '@react-types/shared';
14
15export interface SingleSelection {
16 /** Whether the collection allows empty selection. */
17 disallowEmptySelection?: boolean,
18 /** The currently selected key in the collection (controlled). */
19 selectedKey?: Key | null,
20 /** The initial selected key in the collection (uncontrolled). */
21 defaultSelectedKey?: Key,
22 /** Handler that is called when the selection changes. */
23 onSelectionChange?: (key: Key) => any
24}
25
26export type SelectionMode = 'none' | 'single' | 'multiple';
27export type SelectionBehavior = 'toggle' | 'replace';
28export type Selection = 'all' | Set<Key>;
29export interface MultipleSelection {
30 /** The type of selection that is allowed in the collection. */
31 selectionMode?: SelectionMode,
32 /** Whether the collection allows empty selection. */
33 disallowEmptySelection?: boolean,
34 /** The currently selected keys in the collection (controlled). */
35 selectedKeys?: 'all' | Iterable<Key>,
36 /** The initial selected keys in the collection (uncontrolled). */
37 defaultSelectedKeys?: 'all' | Iterable<Key>,
38 /** Handler that is called when the selection changes. */
39 onSelectionChange?: (keys: Selection) => any,
40 /** The currently disabled keys in the collection (controlled). */
41 disabledKeys?: Iterable<Key>
42}
43
44export interface SpectrumSelectionProps {
45 /** How selection should be displayed. */
46 selectionStyle?: 'checkbox' | 'highlight'
47}
48
49export type FocusStrategy = 'first' | 'last';
50export type DisabledBehavior = 'selection' | 'all';