@leafygreen-ui/combobox 1.0.2 → 1.2.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/CHANGELOG.md +65 -0
- package/README.md +2 -2
- package/dist/Chip.d.ts.map +1 -1
- package/dist/Combobox.d.ts +7 -1
- package/dist/Combobox.d.ts.map +1 -1
- package/dist/Combobox.styles.d.ts +7 -3
- package/dist/Combobox.styles.d.ts.map +1 -1
- package/dist/Combobox.types.d.ts +33 -6
- package/dist/Combobox.types.d.ts.map +1 -1
- package/dist/ComboboxContext.d.ts +1 -1
- package/dist/ComboboxContext.d.ts.map +1 -1
- package/dist/ComboboxOption.d.ts.map +1 -1
- package/dist/ComboboxTestUtils.d.ts +3 -4
- package/dist/ComboboxTestUtils.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/OptionObjectUtils.d.ts +5 -0
- package/dist/utils/OptionObjectUtils.d.ts.map +1 -0
- package/dist/utils/flattenChildren.d.ts +11 -0
- package/dist/utils/flattenChildren.d.ts.map +1 -0
- package/dist/utils/getNameAndValue.d.ts +14 -0
- package/dist/utils/getNameAndValue.d.ts.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/wrapJSX.d.ts +14 -0
- package/dist/utils/wrapJSX.d.ts.map +1 -0
- package/package.json +22 -12
- package/src/Chip.tsx +16 -9
- package/src/Combobox.spec.tsx +336 -164
- package/src/Combobox.story.tsx +274 -248
- package/src/Combobox.styles.ts +94 -24
- package/src/Combobox.tsx +456 -279
- package/src/Combobox.types.ts +46 -8
- package/src/ComboboxContext.tsx +2 -2
- package/src/ComboboxOption.tsx +36 -11
- package/src/ComboboxTestUtils.tsx +22 -8
- package/src/utils/ComboboxUtils.spec.tsx +227 -0
- package/src/utils/OptionObjectUtils.ts +26 -0
- package/src/utils/flattenChildren.tsx +47 -0
- package/src/utils/getNameAndValue.ts +23 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/wrapJSX.tsx +54 -0
- package/tsconfig.json +3 -0
- package/tsconfig.tsbuildinfo +1 -3977
- package/dist/util.d.ts +0 -53
- package/dist/util.d.ts.map +0 -1
- package/src/util.tsx +0 -117
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,70 @@
|
|
|
1
1
|
# @leafygreen-ui/combobox
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8ab46ed4: Adds `Large` size variant to Combobox. Additionally, restores legacy font in Label & Description
|
|
8
|
+
- d241af9e: Adds a `disabled` prop to ComboboxOptions. Note, disabled options will still be rendered in the menu, but not selectable
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- d5c12b77: Updates filtering behavior. Now when opening the menu all options will be displayed, regardless of whether a selection has already been made
|
|
13
|
+
- a5d19177: Updates backdrop click behavior to match native `<select>`. Now, when clicking away from an open menu to close it, the Combobox will retain focus and no click handlers should fire on clicked elements until the menu is closed
|
|
14
|
+
- 8f7f8555: Updates combobox focus ring behavior. The combobox will now display a focus ring whenever the user is able to type in thy combobox. The outer focus ring will not render if a chip or the clear button is focused.
|
|
15
|
+
- 4f2ff237: - Updates min-width of the input to fit all characters (previously wide characters would be cut off).
|
|
16
|
+
- Updates text wrapping of menu items so long unbroken strings (like ids) won't overflow, but wrap.
|
|
17
|
+
- d241af9e: Restores menu font to legacy Akzidenz font
|
|
18
|
+
- 6792bc44: Refactors Combobox and Select to use the new `useAvailableSpace` hook to calculate the max menu height
|
|
19
|
+
- 266e0d8e: Ensures the focus remains in the combobox when a chip is removed. Focus is set to either the input, or the next chip to the right, whichever is relevant
|
|
20
|
+
- 422dbfcd: Adds additional tests for internal Combobox utilities
|
|
21
|
+
- Updated dependencies [1356d50d]
|
|
22
|
+
- Updated dependencies [6a89bc29]
|
|
23
|
+
- Updated dependencies [fd2f6de0]
|
|
24
|
+
- Updated dependencies [6792bc44]
|
|
25
|
+
- Updated dependencies [96d1ff9c]
|
|
26
|
+
- Updated dependencies [422dbfcd]
|
|
27
|
+
- Updated dependencies [9ff90d4b]
|
|
28
|
+
- @leafygreen-ui/checkbox@8.0.3
|
|
29
|
+
- @leafygreen-ui/palette@3.4.0
|
|
30
|
+
- @leafygreen-ui/hooks@7.3.0
|
|
31
|
+
- @leafygreen-ui/icon-button@11.0.2
|
|
32
|
+
- @leafygreen-ui/inline-definition@3.0.2
|
|
33
|
+
- @leafygreen-ui/tokens@1.3.1
|
|
34
|
+
- @leafygreen-ui/typography@11.0.2
|
|
35
|
+
- @leafygreen-ui/lib@9.3.0
|
|
36
|
+
|
|
37
|
+
## 1.1.0
|
|
38
|
+
|
|
39
|
+
### Minor Changes
|
|
40
|
+
|
|
41
|
+
- e9c39305: - Reduces `min-width` of combobox down to `24px`
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- a526ac52: Adds `@leafygreen-ui/tokens` and `@leafygreen-ui/tooltip` to dependencies
|
|
46
|
+
- e9c39305: Updates highlighting function to fix a bug where some text would be duplicated
|
|
47
|
+
- Fixes left padding when `overflow="scroll-x"`
|
|
48
|
+
- Clarifies wording for `initialValue` prop docs
|
|
49
|
+
- Updated dependencies [e630a889]
|
|
50
|
+
- Updated dependencies [2670e4db]
|
|
51
|
+
- Updated dependencies [6c12e85a]
|
|
52
|
+
- @leafygreen-ui/checkbox@8.0.2
|
|
53
|
+
- @leafygreen-ui/icon@11.10.0
|
|
54
|
+
|
|
55
|
+
## 1.0.3
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Updated dependencies [e13d2487]
|
|
60
|
+
- Updated dependencies [500d6c60]
|
|
61
|
+
- @leafygreen-ui/checkbox@8.0.0
|
|
62
|
+
- @leafygreen-ui/icon-button@11.0.0
|
|
63
|
+
- @leafygreen-ui/popover@8.0.0
|
|
64
|
+
- @leafygreen-ui/interaction-ring@3.0.0
|
|
65
|
+
- @leafygreen-ui/icon@11.9.0
|
|
66
|
+
- @leafygreen-ui/typography@11.0.0
|
|
67
|
+
|
|
3
68
|
## 1.0.2
|
|
4
69
|
|
|
5
70
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -81,8 +81,8 @@ import { Combobox, ComboboxOption } from '@leafygreen-ui/combobox';
|
|
|
81
81
|
| ------------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
|
|
82
82
|
| `children` | `<ComboboxOption>`, `<ComboboxGroup>` | Define the Combobox Options by passing children | |
|
|
83
83
|
| `multiselect` | `boolean` | Defines whether a user can select multiple options, or only a single option. When using TypeScript, `multiselect` affects the valid values of `initialValue`, `value`, and `onChange` | `false` |
|
|
84
|
-
| `initialValue` | `Array<string>`, `string` | The initial selection. Must be a string
|
|
85
|
-
| `value` | `Array<string>`, `string` | The controlled value of the Combobox. Must be a string
|
|
84
|
+
| `initialValue` | `Array<string>`, `string` | The initial selection. Must be a string (or array of strings) that matches the `value` prop of a `ComboboxOption`. Changing the `initialValue` after initial render will not change the selection. | |
|
|
85
|
+
| `value` | `Array<string>`, `string` | The controlled value of the Combobox. Must be a string (or array of strings) that matches the `value` prop of a `ComboboxOption`. Changing `value` after initial render _will_ affect the selection. `value` will always take precedence over `initialValue` if both are provided. | |
|
|
86
86
|
| `onChange` | `(Array<string>) => void`, `(string) => void` | A callback called when the selection changes. Callback recieves a single argument that is the new selection, either string, or string array | |
|
|
87
87
|
| `overflow` | `'expand-y'`, `'expand-x'`, `'scroll-x'` | Defines the overflow behavior of a multiselect combobox. **expand-y**: Combobox has fixed width, and additional selections will cause the element to grow in the block direction. **expand-x**: Combobox has fixed height, and additional selections will cause the elemenet to grow in the inline direction. **scroll-x**: Combobox has fixed height and width, and additional selections will cause the element to be scrollable in the x (horizontal) direction. | `'expand-y'` |
|
|
88
88
|
| `label` | `string` | An accessible label for the input, rendered in a `<label>` to the DOM | |
|
package/dist/Chip.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../src/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../src/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;AA6G3D,eAAO,MAAM,IAAI,mFAsHhB,CAAC"}
|
package/dist/Combobox.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ComboboxProps } from './Combobox.types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Combobox is a combination of a Select and TextInput,
|
|
5
|
+
* allowing the user to either type a value directly or select a value from the list.
|
|
6
|
+
* Can be configured to select a single or multiple options.
|
|
5
7
|
*/
|
|
6
8
|
export default function Combobox<M extends boolean>({ children, label, description, placeholder, 'aria-label': ariaLabel, disabled, size, darkMode, state, errorMessage, searchState, searchEmptyMessage, searchErrorMessage, searchLoadingMessage, filteredOptions, onFilter, clearable, onClear, overflow, multiselect, initialValue, onChange, value, chipTruncationLocation, chipCharacterLimit, className, usePortal, portalClassName, portalContainer, scrollContainer, popoverZIndex, ...rest }: ComboboxProps<M>): JSX.Element;
|
|
9
|
+
/**
|
|
10
|
+
* Why'd you have to go and make things so complicated?
|
|
11
|
+
* - Avril; and also me to myself about this component
|
|
12
|
+
*/
|
|
7
13
|
//# sourceMappingURL=Combobox.d.ts.map
|
package/dist/Combobox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../src/Combobox.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../src/Combobox.tsx"],"names":[],"mappings":";AAsBA,OAAO,EACL,aAAa,EAOd,MAAM,kBAAkB,CAAC;AA8B1B;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAClD,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAsB,EACtB,YAAY,EAAE,SAAS,EACvB,QAAgB,EAChB,IAA2B,EAC3B,QAAgB,EAChB,KAAc,EACd,YAAY,EACZ,WAAqB,EACrB,kBAAuC,EACvC,kBAA6C,EAC7C,oBAA2C,EAC3C,eAAe,EACf,QAAQ,EACR,SAAgB,EAChB,OAAO,EACP,QAAqB,EACrB,WAAwB,EACxB,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,sBAAsB,EACtB,kBAAuB,EACvB,SAAS,EACT,SAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,aAAa,EACb,GAAG,IAAI,EACR,EAAE,aAAa,CAAC,CAAC,CAAC,eA8vClB;AACD;;;GAGG"}
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
* Styles
|
|
3
3
|
*/
|
|
4
4
|
import { ComboboxSize, Overflow, State } from './Combobox.types';
|
|
5
|
+
export declare const chipClassName: string;
|
|
6
|
+
export declare const _tempLabelDescriptionOverrideStyle: string;
|
|
5
7
|
export declare const comboboxParentStyle: ({ darkMode, size, overflow, }: {
|
|
6
8
|
darkMode: boolean;
|
|
7
9
|
size: ComboboxSize;
|
|
8
10
|
overflow: Overflow;
|
|
9
11
|
}) => string;
|
|
10
12
|
export declare const comboboxStyle: string;
|
|
11
|
-
export declare const
|
|
13
|
+
export declare const comboboxFocusStyle: string;
|
|
12
14
|
export declare const interactionRingColor: ({ state, darkMode, }: {
|
|
13
15
|
state: State;
|
|
14
16
|
darkMode: boolean;
|
|
@@ -17,14 +19,16 @@ export declare const interactionRingColor: ({ state, darkMode, }: {
|
|
|
17
19
|
} | {
|
|
18
20
|
hovered: "#FCEBE2" | undefined;
|
|
19
21
|
};
|
|
20
|
-
export declare const inputWrapperStyle: ({ overflow, isOpen, selection, value, }: {
|
|
22
|
+
export declare const inputWrapperStyle: ({ overflow, isOpen, selection, size, value, }: {
|
|
21
23
|
overflow: Overflow;
|
|
22
24
|
isOpen: boolean;
|
|
23
25
|
selection: string | Array<string> | null;
|
|
26
|
+
size: ComboboxSize;
|
|
24
27
|
value?: string | undefined;
|
|
25
28
|
}) => string;
|
|
26
29
|
export declare const inputElementStyle: string;
|
|
27
|
-
export declare const
|
|
30
|
+
export declare const clearButtonStyle: string;
|
|
31
|
+
export declare const clearButtonFocusOverrideStyles: string;
|
|
28
32
|
export declare const errorMessageStyle: string;
|
|
29
33
|
export declare const endIcon: string;
|
|
30
34
|
export declare const loadingIconStyle: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.styles.d.ts","sourceRoot":"","sources":["../src/Combobox.styles.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"Combobox.styles.d.ts","sourceRoot":"","sources":["../src/Combobox.styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAUjE,eAAO,MAAM,aAAa,QAAyC,CAAC;AAGpE,eAAO,MAAM,kCAAkC,QAI9C,CAAC;AAEF,eAAO,MAAM,mBAAmB;cAKpB,OAAO;UACX,YAAY;cACR,QAAQ;YAqEnB,CAAC;AAEF,eAAO,MAAM,aAAa,QA0BzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAO9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;WAIxB,KAAK;cACF,OAAO;;;;;CAWlB,CAAC;AAEF,eAAO,MAAM,iBAAiB;cAOlB,QAAQ;YACV,OAAO;eACJ,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI;UAClC,YAAY;;YA4EnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAkB7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AAIF,eAAO,MAAM,8BAA8B,QAO1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAK7B,CAAC;AAEF,eAAO,MAAM,OAAO,QAEnB,CAAC;AAUF,eAAO,MAAM,gBAAgB,QAE5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;cAKjB,OAAO;UACX,YAAY;;YA4DnB,CAAC;AAEF,eAAO,MAAM,SAAS;eAAgC,MAAM;YAc3D,CAAC;AAEF,eAAO,MAAM,QAAQ,QAIpB,CAAC;AAEF,eAAO,MAAM,WAAW,QAYvB,CAAC"}
|
package/dist/Combobox.types.d.ts
CHANGED
|
@@ -3,8 +3,22 @@ import { Either } from '@leafygreen-ui/lib';
|
|
|
3
3
|
/**
|
|
4
4
|
* Prop Enums & Types
|
|
5
5
|
*/
|
|
6
|
+
export declare const ComboboxElement: {
|
|
7
|
+
readonly Input: "Input";
|
|
8
|
+
readonly ClearButton: "ClearButton";
|
|
9
|
+
readonly FirstChip: "FirstChip";
|
|
10
|
+
readonly LastChip: "LastChip";
|
|
11
|
+
readonly MiddleChip: "MiddleChip";
|
|
12
|
+
readonly Combobox: "Combobox";
|
|
13
|
+
readonly Menu: "Menu";
|
|
14
|
+
};
|
|
15
|
+
export declare type ComboboxElement = typeof ComboboxElement[keyof typeof ComboboxElement];
|
|
16
|
+
/**
|
|
17
|
+
* Prop types
|
|
18
|
+
*/
|
|
6
19
|
export declare const ComboboxSize: {
|
|
7
|
-
readonly
|
|
20
|
+
readonly Default: "default";
|
|
21
|
+
readonly Large: "large";
|
|
8
22
|
};
|
|
9
23
|
export declare type ComboboxSize = typeof ComboboxSize[keyof typeof ComboboxSize];
|
|
10
24
|
export declare const TrunctationLocation: {
|
|
@@ -17,7 +31,7 @@ export declare type TrunctationLocation = typeof TrunctationLocation[keyof typeo
|
|
|
17
31
|
export declare const Overflow: {
|
|
18
32
|
readonly expandY: "expand-y";
|
|
19
33
|
readonly expandX: "expand-x";
|
|
20
|
-
readonly
|
|
34
|
+
readonly scrollX: "scroll-x";
|
|
21
35
|
};
|
|
22
36
|
export declare type Overflow = typeof Overflow[keyof typeof Overflow];
|
|
23
37
|
export declare const State: {
|
|
@@ -48,8 +62,8 @@ export interface ComboboxMultiselectProps<M extends boolean> {
|
|
|
48
62
|
multiselect?: M;
|
|
49
63
|
/**
|
|
50
64
|
* The initial selection.
|
|
51
|
-
* Must be a string
|
|
52
|
-
* Changing the initialValue after initial render will not change the selection.
|
|
65
|
+
* Must be a string (or array of strings) that matches the `value` prop of a `ComboboxOption`.
|
|
66
|
+
* Changing the `initialValue` after initial render will not change the selection.
|
|
53
67
|
*/
|
|
54
68
|
initialValue?: SelectValueType<M>;
|
|
55
69
|
/**
|
|
@@ -59,8 +73,9 @@ export interface ComboboxMultiselectProps<M extends boolean> {
|
|
|
59
73
|
onChange?: onChangeType<M>;
|
|
60
74
|
/**
|
|
61
75
|
* The controlled value of the Combobox.
|
|
62
|
-
* Must be a string
|
|
63
|
-
* Changing value after initial render
|
|
76
|
+
* Must be a string (or array of strings) that matches the `value` prop of a `ComboboxOption`.
|
|
77
|
+
* Changing `value` after initial render _will_ affect the selection.
|
|
78
|
+
* `value` will always take precedence over `initialValue` if both are provided.
|
|
64
79
|
*/
|
|
65
80
|
value?: SelectValueType<M>;
|
|
66
81
|
/**
|
|
@@ -207,18 +222,30 @@ interface BaseComboboxOptionProps {
|
|
|
207
222
|
* The icon to display to the left of the option in the menu.
|
|
208
223
|
*/
|
|
209
224
|
glyph?: ReactElement;
|
|
225
|
+
/**
|
|
226
|
+
* Defines whether the option is disabled.
|
|
227
|
+
* Node: disabled options are still rendered in the menu, but not selectable.
|
|
228
|
+
*/
|
|
229
|
+
disabled?: boolean;
|
|
210
230
|
/**
|
|
211
231
|
* Styling Prop
|
|
212
232
|
*/
|
|
213
233
|
className?: string;
|
|
214
234
|
}
|
|
215
235
|
export declare type ComboboxOptionProps = Either<BaseComboboxOptionProps, 'value' | 'displayName'>;
|
|
236
|
+
export interface OptionObject {
|
|
237
|
+
value: string;
|
|
238
|
+
displayName: string;
|
|
239
|
+
isDisabled: boolean;
|
|
240
|
+
hasGlyph?: boolean;
|
|
241
|
+
}
|
|
216
242
|
export interface InternalComboboxOptionProps {
|
|
217
243
|
value: string;
|
|
218
244
|
displayName: string;
|
|
219
245
|
isSelected: boolean;
|
|
220
246
|
isFocused: boolean;
|
|
221
247
|
setSelected: () => void;
|
|
248
|
+
disabled?: boolean;
|
|
222
249
|
glyph?: ReactElement;
|
|
223
250
|
className?: string;
|
|
224
251
|
index: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../src/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AAEH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../src/Combobox.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { ComboboxSize, TrunctationLocation } from './Combobox.types';
|
|
|
3
3
|
interface ComboboxData {
|
|
4
4
|
multiselect: boolean;
|
|
5
5
|
darkMode: boolean;
|
|
6
|
-
size:
|
|
6
|
+
size: ComboboxSize;
|
|
7
7
|
withIcons: boolean;
|
|
8
8
|
disabled: boolean;
|
|
9
9
|
chipTruncationLocation?: TrunctationLocation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxContext.d.ts","sourceRoot":"","sources":["../src/ComboboxContext.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAErE,UAAU,YAAY;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ComboboxContext.d.ts","sourceRoot":"","sources":["../src/ComboboxContext.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAErE,UAAU,YAAY;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,mBAAmB,CAAC;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,uCAM1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxOption.d.ts","sourceRoot":"","sources":["../src/ComboboxOption.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComboboxOption.d.ts","sourceRoot":"","sources":["../src/ComboboxOption.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;AA8E1B;;GAEG;AACH,QAAA,MAAM,sBAAsB,mGAmI3B,CAAC;AAGF,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,iBAAwB,cAAc,CAAC,CAAC,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAE1E;kBAFuB,cAAc;;;eAAd,cAAc"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="jest" />
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import { BaseComboboxProps, ComboboxMultiselectProps } from './Combobox.types';
|
|
4
|
-
import { OptionObject } from './util';
|
|
3
|
+
import { BaseComboboxProps, ComboboxMultiselectProps, OptionObject } from './Combobox.types';
|
|
5
4
|
export interface NestedObject {
|
|
6
5
|
label: string;
|
|
7
6
|
children: Array<string | OptionObject>;
|
|
@@ -56,8 +55,8 @@ export declare function renderCombobox<T extends Select>(select?: T, props?: ren
|
|
|
56
55
|
clearButtonEl: HTMLElement | null;
|
|
57
56
|
container: HTMLElement;
|
|
58
57
|
baseElement: HTMLElement;
|
|
59
|
-
debug: (baseElement?:
|
|
60
|
-
rerender: (ui: React.ReactElement<any, string |
|
|
58
|
+
debug: (baseElement?: HTMLElement | DocumentFragment | (HTMLElement | DocumentFragment)[] | undefined, maxLength?: number | undefined, options?: import("pretty-format/build/types").OptionsReceived | undefined) => void;
|
|
59
|
+
rerender: (ui: React.ReactElement<any, string | React.JSXElementConstructor<any>>) => void;
|
|
61
60
|
unmount: () => boolean;
|
|
62
61
|
asFragment: () => DocumentFragment;
|
|
63
62
|
getByLabelText: (text: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined, waitForElementOptions?: unknown) => HTMLElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxTestUtils.d.ts","sourceRoot":"","sources":["../src/ComboboxTestUtils.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ComboboxTestUtils.d.ts","sourceRoot":"","sources":["../src/ComboboxTestUtils.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;CACxC;AAED,oBAAY,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC3C,aAAK,mBAAmB,GAAG;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC;CACvD,GAAG,iBAAiB,GACnB,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAEpC,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,YAAY,CAgB9C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,YAAY,CA+B9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,0DAyC1B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAC7C,MAAM,GAAE,CAAiB,EACzB,KAAK,CAAC,EAAE,mBAAmB;iCAsDS,mBAAmB;;gBAetB,MAAM,GAAG,WAAW,GAAG,IAAI;gBAC3B,MAAM,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,IAAI;;;gBAgBxC,MAAM,GAAG,WAAW,GAAG,IAAI;gBAC3B,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;gBACrC,MAAM,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,IAAI;;yBA5BjD,MAAM,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6D7C;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,cAAe,OAAO,YAAmC,CAAC;AA8B7E,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI,CAAC;QACb,UAAU,QAAQ,CAAC,CAAC;YAClB,cAAc,IAAI,CAAC,CAAC;SACrB;KACF;CACF"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import n,{createContext as o,useContext as e,useCallback as r,useMemo as t,useRef as i,useEffect as a,useState as l}from"react";import{kebabCase as c,isArray as u,isNull as s,isString as d,isUndefined as b,clone as p,isEqual as g}from"lodash";import{Label as m,Description as f}from"@leafygreen-ui/typography";import h from"@leafygreen-ui/popover";import{useIdAllocator as v,useForwardedRef as x,useDynamicRefs as y,usePrevious as w,useViewportSize as k,useEventListener as C}from"@leafygreen-ui/hooks";import N from"@leafygreen-ui/interaction-ring";import O,{isComponentGlyph as j}from"@leafygreen-ui/icon";import M from"@leafygreen-ui/icon-button";import{css as E,cx as I,keyframes as S}from"@leafygreen-ui/emotion";import{uiColors as z}from"@leafygreen-ui/palette";import{isComponentType as P,keyMap as D,createDataProp as L,consoleOnce as F}from"@leafygreen-ui/lib";import A from"@leafygreen-ui/checkbox";import{jsx as T}from"@emotion/react";import R from"@leafygreen-ui/inline-definition";import{fontFamilies as W}from"@leafygreen-ui/tokens";function B(n,o){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);o&&(r=r.filter((function(o){return Object.getOwnPropertyDescriptor(n,o).enumerable}))),e.push.apply(e,r)}return e}function G(n){for(var o=1;o<arguments.length;o++){var e=null!=arguments[o]?arguments[o]:{};o%2?B(Object(e),!0).forEach((function(o){V(n,o,e[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):B(Object(e)).forEach((function(o){Object.defineProperty(n,o,Object.getOwnPropertyDescriptor(e,o))}))}return n}function K(n){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function V(n,o,e){return o in n?Object.defineProperty(n,o,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[o]=e,n}function H(){return(H=Object.assign||function(n){for(var o=1;o<arguments.length;o++){var e=arguments[o];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r])}return n}).apply(this,arguments)}function U(n,o){if(null==n)return{};var e,r,t=function(n,o){if(null==n)return{};var e,r,t={},i=Object.keys(n);for(r=0;r<i.length;r++)e=i[r],o.indexOf(e)>=0||(t[e]=n[e]);return t}(n,o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(r=0;r<i.length;r++)e=i[r],o.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(n,e)&&(t[e]=n[e])}return t}function X(n,o){return o||(o=n.slice(0)),Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(o)}}))}function Z(n,o){return function(n){if(Array.isArray(n))return n}(n)||function(n,o){var e=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null==e)return;var r,t,i=[],a=!0,l=!1;try{for(e=e.call(n);!(a=(r=e.next()).done)&&(i.push(r.value),!o||i.length!==o);a=!0);}catch(n){l=!0,t=n}finally{try{a||null==e.return||e.return()}finally{if(l)throw t}}return i}(n,o)||$(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Y(n){return function(n){if(Array.isArray(n))return q(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||$(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(n,o){if(n){if("string"==typeof n)return q(n,o);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?q(n,o):void 0}}function q(n,o){(null==o||o>n.length)&&(o=n.length);for(var e=0,r=new Array(o);e<o;e++)r[e]=n[e];return r}var J,Q,_,nn,on,en,rn,tn,an,ln,cn=o({multiselect:!1,darkMode:!1,size:"default",withIcons:!1,disabled:!1}),un=G(G({},D),{},{Backspace:8,Delete:46}),sn=function(o,e,r){if(e&&r){var t=new RegExp(e,"gi"),i=o.search(t),a=i+e.length,l=o.split(""),c=l.slice(0,i).join(""),u=l.slice(a).join(""),s=l.slice(i,a).join(""),d=n.createElement(r,null,s);return T(n.Fragment,null,c,d,u)}return T(n.Fragment,null,o)},dn=function(n){var o,e=n.value,r=n.displayName;return{value:null!=e?e:c(r),displayName:null!==(o=null!=r?r:e)&&void 0!==o?o:""}},bn=function o(e){return n.Children.toArray(e).reduce((function(n,e){if(P(e,"ComboboxOption")){var r=dn(e.props),t=r.value,i=r.displayName,a=e.props.glyph;return[].concat(Y(n),[{value:t,displayName:i,hasGlyph:!!a}])}if(P(e,"ComboboxGroup")){var l=e.props.children;if(l)return[].concat(Y(n),Y(o(l)))}}),[])},pn=E(Q||(Q=X(["\n display: inline-flex;\n gap: 8px;\n justify-content: start;\n align-items: inherit;\n"]))),gn=E(_||(_=X(["\n pointer-events: none;\n"]))),mn=function(n){return E(nn||(nn=X(["\n font-weight: ",";\n"])),n?"bold":"normal")},fn=n.forwardRef((function(o,i){var a=o.displayName,l=o.glyph,c=o.isSelected,u=o.isFocused,s=o.setSelected,d=o.className,b=e(cn),p=b.multiselect,g=b.darkMode,m=b.withIcons,f=b.inputValue,h=v({prefix:"combobox-option-text"}),y=x(i,null),w=r((function(n){n.stopPropagation(),n.target!==y.current&&"INPUT"!==n.target.tagName||s()}),[y,s]),k=t((function(){if(l){if(j(l)||P(l,"Icon"))return l;console.error("`ComboboxOption` instance did not render icon because it is not a known glyph element.",l)}}),[l]),C=t((function(){if(p){var o=T(A,{label:"","aria-labelledby":h,checked:c,tabIndex:-1,animate:!1});return T(n.Fragment,null,T("span",{className:I(pn,gn)},m?k:o,T("span",{id:h,className:mn(c)},sn(a,f,"strong"))),m&&o)}return T(n.Fragment,null,T("span",{className:I(pn,gn)},k,T("span",{className:mn(c)},sn(a,f,"strong"))),c&&T(O,{glyph:"Checkmark",color:g?z.blue.light1:z.blue.base}))}),[p,k,c,a,f,g,h,m]);return T("li",{ref:y,role:"option","aria-selected":u,"aria-label":a,tabIndex:-1,className:I(E(J||(J=X(["\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n list-style: none;\n color: inherit;\n cursor: pointer;\n overflow: hidden;\n font-size: var(--lg-combobox-item-font-size);\n line-height: var(--lg-combobox-item-line-height);\n padding: var(--lg-combobox-item-padding-y) var(--lg-combobox-item-padding-x);\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n width: 3px;\n height: var(--lg-combobox-item-wedge-height);\n background-color: transparent;\n border-radius: 0 2px 2px 0;\n transform: scaleY(0.3);\n transition: 150ms ease-in-out;\n transition-property: transform, background-color;\n }\n\n &:hover {\n outline: none;\n background-color: var(--lg-combobox-item-hover-color);\n }\n\n &[aria-selected='true'] {\n outline: none;\n background-color: var(--lg-combobox-item-active-color);\n\n &:before {\n background-color: var(--lg-combobox-item-wedge-color);\n transform: scaleY(1);\n }\n }\n"]))),d),onClick:w,onKeyPress:w},C)}));function hn(n){throw Error("`ComboboxOption` must be a child of a `Combobox` instance")}fn.displayName="ComboboxOption",hn.displayName="ComboboxOption";var vn,xn,yn,wn,kn,Cn,Nn,On,jn,Mn,En,In,Sn,zn,Pn,Dn,Ln,Fn,An,Tn,Rn,Wn,Bn,Gn=function(n){var o,e,r=n.darkMode,t=n.size;switch(o=r?E(on||(on=X([""]))):E(en||(en=X(["\n --lg-combobox-chip-text-color: ",";\n --lg-combobox-chip-icon-color: ",";\n --lg-combobox-chip-background-color: ",";\n --lg-combobox-chip-hover-color: ",";\n --lg-combobox-chip-focus-color: ",";\n "])),z.gray.dark3,z.gray.dark2,z.gray.light2,z.gray.light1,z.blue.light2),t){case"default":e=E(rn||(rn=X(["\n --lg-combobox-chip-height: 24px;\n --lg-combobox-chip-border-radius: 4px;\n --lg-combobox-chip-font-size: 14px;\n --lg-combobox-chip-line-height: 20px;\n --lg-combobox-chip-padding-x: 6px;\n "])))}return I(o,e,E(tn||(tn=X(["\n display: inline-flex;\n align-items: center;\n overflow: hidden;\n white-space: nowrap;\n height: var(--lg-combobox-chip-height);\n font-size: var(--lg-combobox-chip-font-size);\n line-height: var(--lg-combobox-chip-line-height);\n border-radius: var(--lg-combobox-chip-border-radius);\n color: var(--lg-combobox-chip-text-color);\n background-color: var(--lg-combobox-chip-background-color);\n\n // TODO - refine these styles\n /* &:focus, */\n &:focus-within {\n background-color: var(--lg-combobox-chip-focus-color);\n }\n "]))))},Kn=E(an||(an=X(["\n padding-inline: var(--lg-combobox-chip-padding-x);\n"]))),Vn=E(ln||(ln=X(["\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n outline: none;\n border: none;\n background-color: transparent;\n color: var(--lg-combobox-chip-icon-color);\n cursor: pointer;\n transition: background-color 100ms ease-in-out;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 1px;\n background-color: var(--lg-combobox-chip-hover-color);\n }\n\n &:hover {\n background-color: var(--lg-combobox-chip-hover-color);\n }\n"]))),Hn=n.forwardRef((function(n,o){var r=n.displayName,l=n.isFocused,c=n.onRemove,u=n.onFocus,s=e(cn),d=s.darkMode,b=s.size,p=s.disabled,g=s.chipTruncationLocation,m=void 0===g?"end":g,f=s.chipCharacterLimit,h=void 0===f?12:f,v=!!h&&!!m&&"none"!==m&&r.length>h,x=i(null),y=t((function(){if(v){var n=h-3;switch(m){case"start":return"…"+r.substring(r.length-n).trim();case"middle":return r.substring(0,n/2).trim()+"…"+r.substring(r.length-n/2).trim();case"end":return r.substring(0,n).trim()+"…";default:return r}}return!1}),[h,m,r,v]);a((function(){var n;l&&!p&&(null==x||null===(n=x.current)||void 0===n||n.focus())}),[p,o,l]);var w=L("combobox-chip");return T("span",H({role:"option","aria-selected":l,"data-test-id":"lg-combobox-chip"},w.prop,{ref:o,className:Gn({darkMode:d,size:b}),onClick:function(n){var o;null!==(o=x.current)&&void 0!==o&&o.contains(n.target)||u()},tabIndex:-1}),T("span",{className:Kn},y?T(R,{definition:r,align:"bottom"},y):r),T("button",{"aria-label":"Deselect ".concat(r),"aria-disabled":p,disabled:p,ref:x,className:Vn,onClick:function(){p||c()},onKeyDown:function(n){p||n.keyCode!==un.Delete&&n.keyCode!==un.Backspace&&n.keyCode!==un.Enter&&n.keyCode!==un.Space||c()}},T(O,{glyph:"X"})))}));Hn.displayName="Chip";var Un,Xn,Zn=function(n){var o=n.darkMode,e=n.size,r=n.overflow;return I(function(n){return n?E(vn||(vn=X([""]))):E(xn||(xn=X(["\n --lg-combobox-color-error: ",";\n --lg-combobox-text-color: ",";\n --lg-combobox-text-color-disabled: ",";\n\n --lg-combobox-background-color: ",";\n --lg-combobox-background-color-focus: ",";\n --lg-combobox-background-color-disabled: ",";\n\n --lg-combobox-border-color: ",";\n --lg-combobox-border-color-disabled: ",";\n --lg-combobox-border-color-error: ",";\n\n --lg-combobox-shadow: 0px 1px 2px rgba(6, 22, 33, 0.3);\n --lg-combobox-shadow-focus: 0px 4px 4px rgba(6, 22, 33, 0.3);\n "])),z.red.base,z.gray.dark3,z.gray.dark1,z.gray.light3,z.white,z.gray.light2,z.gray.base,z.gray.light1,z.red.base)}(o),function(n){switch(n){case"default":return E(yn||(yn=X(["\n --lg-combobox-padding-y: 5px;\n --lg-combobox-padding-x: 7px;\n --lg-combobox-height: 24px;\n --lg-combobox-font-size: 14px;\n --lg-combobox-line-height: 20px;\n --lg-combobox-border-radius: 3px;\n --lg-combobox-icon-height: 16px;\n "])))}}(e),E(wn||(wn=X(["\n --lg-combobox-width: ",";\n --lg-combobox-padding: var(--lg-combobox-padding-y)\n var(--lg-combobox-padding-x) var(--lg-combobox-padding-y)\n ",";\n width: var(--lg-combobox-width);\n "])),"expand-x"===r?"unset":"100%","scroll-x"===r?"0":"var(--lg-combobox-padding-x)"))},Yn=E(kn||(kn=X(["\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n padding: var(--lg-combobox-padding);\n color: var(--lg-combobox-text-color);\n background-color: var(--lg-combobox-background-color);\n box-shadow: var(--lg-combobox-shadow);\n border: 1px solid var(--lg-combobox-border-color);\n border-radius: var(--lg-combobox-border-radius);\n width: var(--lg-combobox-width);\n cursor: text;\n transition: 150ms ease-in-out;\n transition-property: background-color, box-shadow;\n min-width: 256px;\n\n &:focus-within {\n background-color: var(--lg-combobox-background-color-focus);\n box-shadow: var(--lg-combobox-shadow-focus);\n }\n\n &[data-disabled='true'] {\n color: var(--lg-combobox-text-color-disabled);\n background-color: var(--lg-combobox-background-color-disabled);\n border-color: var(--lg-combobox-border-color-disabled);\n box-shadow: unset;\n cursor: not-allowed;\n }\n\n &[data-state='error'] {\n border-color: var(--lg-combobox-border-color-error);\n }\n"]))),$n=E(Cn||(Cn=X(["\n width: var(--lg-combobox-width);\n"]))),qn=function(n){var o=n.state;return n.darkMode?{hovered:"error"===o?z.red.dark2:void 0}:{hovered:"error"===o?z.red.light3:void 0}},Jn=function(n){var o,e=n.overflow,r=n.isOpen,t=n.selection,i=n.value,a=u(t)&&t.length>0,l=null!==(o=null==i?void 0:i.length)&&void 0!==o?o:0,c=E(Nn||(Nn=X(["\n flex-grow: 1;\n width: var(--lg-combobox-width);\n\n --lg-combobox-input-width: ",";\n "])),a?"".concat(l,"ch"):"100%");switch(e){case"scroll-x":return E(On||(On=X(["\n ","\n display: block;\n height: var(--lg-combobox-height);\n white-space: nowrap;\n overflow-x: scroll;\n scroll-behavior: smooth;\n scrollbar-width: none;\n /*\n * Immediate transition in, slow transition out. \n * '-in' transition is handled by `scroll-behavior` \n */\n --lg-combobox-input-transition: width ease-in-out\n ",";\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n & > * {\n margin-inline: 2px;\n\n &:first-child:not(input) {\n margin-inline-start: 0;\n }\n\n &:last-child:not(input) {\n margin-inline-end: 0;\n }\n }\n "],["\n ","\n display: block;\n height: var(--lg-combobox-height);\n white-space: nowrap;\n overflow-x: scroll;\n scroll-behavior: smooth;\n scrollbar-width: none;\n /*\n * Immediate transition in, slow transition out. \n * '-in' transition is handled by \\`scroll-behavior\\` \n */\n --lg-combobox-input-transition: width ease-in-out\n ",";\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n & > * {\n margin-inline: 2px;\n\n &:first-child:not(input) {\n margin-inline-start: 0;\n }\n\n &:last-child:not(input) {\n margin-inline-end: 0;\n }\n }\n "])),c,r?"0":"100ms");case"expand-x":return E(jn||(jn=X(["\n ","\n display: flex;\n gap: 4px;\n flex-wrap: nowrap;\n white-space: nowrap;\n height: var(--lg-combobox-height);\n --lg-combobox-input-transition: none;\n "])),c);case"expand-y":return E(Mn||(Mn=X(["\n ","\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n overflow-x: visible;\n min-height: var(--lg-combobox-height);\n "])),c)}},Qn=E(En||(En=X(["\n border: none;\n cursor: inherit;\n background-color: inherit;\n box-sizing: content-box;\n padding: 0;\n margin: 0;\n text-overflow: ellipsis;\n line-height: var(--lg-combobox-line-height);\n height: var(--lg-combobox-height);\n width: var(--lg-combobox-input-width, 0);\n transition: var(--lg-combobox-input-transition);\n\n &:focus {\n outline: none;\n }\n"]))),_n=E(In||(In=X(["\n // Add a negative margin so the button takes up the same space as the regular icons\n margin-block: calc(var(--lg-combobox-icon-height) / 2 - 100%);\n"]))),no=E(Sn||(Sn=X(["\n font-size: var(--lg-combobox-font-size);\n line-height: var(--lg-combobox-line-height);\n color: var(--lg-combobox-color-error);\n padding-top: var(--lg-combobox-padding-y);\n"]))),oo=E(zn||(zn=X(["\n margin-inline-end: calc(var(--lg-combobox-padding-x) / 2);\n"]))),eo=S(Pn||(Pn=X(["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"]))),ro=E(Dn||(Dn=X(["\n animation: "," 1.5s linear infinite;\n"])),eo),to=function(n){var o,e,r=n.darkMode,t=n.size,i=n.width,a=void 0===i?384:i;switch(o=r?E(Ln||(Ln=X([""]))):E(Fn||(Fn=X(["\n --lg-combobox-menu-color: ",";\n --lg-combobox-menu-message-color: ",";\n --lg-combobox-menu-background-color: ",";\n --lg-combobox-menu-shadow: 0px 3px 7px rgba(0, 0, 0, 0.25);\n --lg-combobox-item-hover-color: ",";\n --lg-combobox-item-active-color: ",";\n --lg-combobox-item-wedge-color: ",";\n "])),z.gray.dark3,z.gray.dark1,z.white,z.gray.light2,z.blue.light3,z.blue.base),t){case"default":e=E(An||(An=X(["\n --lg-combobox-menu-border-radius: 4px;\n --lg-combobox-item-height: 36px;\n --lg-combobox-item-padding-y: 8px;\n --lg-combobox-item-padding-x: 12px;\n --lg-combobox-item-font-size: 14px;\n --lg-combobox-item-line-height: 21px;\n --lg-combobox-item-wedge-height: 22px;\n "])))}return I(o,e,E(Tn||(Tn=X(["\n width: ","px;\n border-radius: var(--lg-combobox-menu-border-radius);\n\n & > * {\n border-radius: inherit;\n }\n "])),a))},io=function(n){var o=n.maxHeight;return E(Rn||(Rn=X(["\n position: relative;\n width: 100%;\n margin: 0;\n padding: 0;\n font-family: ",";\n color: var(--lg-combobox-menu-color);\n background-color: var(--lg-combobox-menu-background-color);\n box-shadow: var(--lg-combobox-menu-shadow);\n border-radius: inherit;\n overflow: auto;\n min-height: var(--lg-combobox-item-height);\n max-height: ","px;\n scroll-behavior: smooth;\n"])),W.default,o)},ao=E(Wn||(Wn=X(["\n position: relative;\n margin: 0;\n padding: 0;\n"]))),lo=E(Bn||(Bn=X(["\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-size: var(--lg-combobox-item-font-size);\n color: var(--lg-combobox-menu-message-color);\n padding: var(--lg-combobox-item-padding-y) var(--lg-combobox-item-padding-x);\n\n & > svg {\n width: 1em;\n height: 1em;\n }\n"]))),co=function(n){return E(Un||(Un=X(["\n --lg-combobox-group-label-color: ",";\n --lg-combobox-group-border-color: ",";\n padding-top: 8px;\n border-bottom: 1px solid var(--lg-combobox-group-border-color);\n"])),n?z.gray.light1:z.gray.dark1,n?z.gray.dark1:z.gray.light1)},uo=E(Xn||(Xn=X(["\n cursor: default;\n width: 100%;\n padding: 0 12px 2px;\n outline: none;\n overflow-wrap: anywhere;\n font-size: 12px;\n line-height: 16px;\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n color: var(--lg-combobox-group-label-color);\n"])));function so(o){var r=o.label,t=o.className,i=o.children,a=e(cn).darkMode,l=v({prefix:"combobox-group"});return n.Children.count(i)>0?T("div",{className:I(co(a),t)},T("div",{className:uo,id:l},r),T("div",{role:"group","aria-labelledby":l},i)):T(n.Fragment,null)}function bo(n){throw Error("`ComboboxGroup` must be a child of a `Combobox` instance")}bo.displayName="ComboboxGroup";var po=["children","label","description","placeholder","aria-label","disabled","size","darkMode","state","errorMessage","searchState","searchEmptyMessage","searchErrorMessage","searchLoadingMessage","filteredOptions","onFilter","clearable","onClear","overflow","multiselect","initialValue","onChange","value","chipTruncationLocation","chipCharacterLimit","className","usePortal","portalClassName","portalContainer","scrollContainer","popoverZIndex"];function go(o){var e=o.children,c=o.label,x=o.description,j=o.placeholder,E=void 0===j?"Select":j,S=o["aria-label"],D=o.disabled,L=void 0!==D&&D,A=o.size,R=void 0===A?"default":A,W=o.darkMode,B=void 0!==W&&W,V=o.state,X=void 0===V?"none":V,Y=o.errorMessage,$=o.searchState,q=void 0===$?"unset":$,J=o.searchEmptyMessage,Q=void 0===J?"No results found":J,_=o.searchErrorMessage,nn=void 0===_?"Could not get results!":_,on=o.searchLoadingMessage,en=void 0===on?"Loading results...":on,rn=o.filteredOptions,tn=o.onFilter,an=o.clearable,ln=void 0===an||an,sn=o.onClear,pn=o.overflow,gn=void 0===pn?"expand-y":pn,mn=o.multiselect,hn=void 0!==mn&&mn,vn=o.initialValue,xn=o.onChange,yn=o.value,wn=o.chipTruncationLocation,kn=o.chipCharacterLimit,Cn=void 0===kn?12:kn,Nn=o.className,On=o.usePortal,jn=void 0===On||On,Mn=o.portalClassName,En=o.portalContainer,In=o.scrollContainer,Sn=o.popoverZIndex,zn=U(o,po),Pn=y({prefix:"option"}),Dn=y({prefix:"chip"}),Ln=v({prefix:"combobox-input"}),Fn=v({prefix:"combobox-label"}),An=v({prefix:"combobox-menu"}),Tn=i(null),Rn=i(null),Wn=i(null),Bn=i(null),Gn=i(null),Kn=Z(l(!1),2),Vn=Kn[0],Un=Kn[1],Xn=w(Vn),eo=Z(l(null),2),co=eo[0],uo=eo[1],bo=Z(l(null),2),go=bo[0],mo=bo[1],fo=w(go),ho=Z(l(""),2),vo=ho[0],xo=ho[1],yo=w(vo),wo=Z(l(null),2),ko=wo[0],Co=wo[1],No=!s(go)&&(u(go)&&go.length>0||d(go)),Oo=r((function(n){return!hn||"string"!=typeof n&&"number"!=typeof n?!hn&&u(n)&&F.error("Error in Combobox: multiselect is set to `false`, but recieved an Array value"):F.error("Error in Combobox: multiselect is set to `true`, but recieved a ".concat(K(n),' value: "').concat(n,'"')),hn&&u(n)}),[hn]),jo=r((function(n){!L&&Bn&&Bn.current&&(Bn.current.focus(),b(n)||Bn.current.setSelectionRange(n,n))}),[L]),Mo=r((function(n){if(Oo(go)){var o=p(go);s(n)?o.length=0:go.includes(n)?o.splice(o.indexOf(n),1):(o.push(n),xo("")),mo(o),null==xn||xn(o)}else{var e=n;mo(e),null==xn||xn(e)}}),[Oo,xn,go]),Eo=function(){Wn&&Wn.current&&(Wn.current.scrollLeft=Wn.current.scrollWidth)},Io=hn&&u(go)&&go.length>0?void 0:E,So=t((function(){return bn(e)}),[e]),zo=r((function(n){var o,e;return n?null!==(o=null===(e=So.find((function(o){return o.value===n})))||void 0===e?void 0:e.displayName)&&void 0!==o?o:n:""}),[So]),Po=r((function(n){var o="string"==typeof n?n:n.value;return rn&&rn.length>0?rn.includes(o):("string"==typeof n?zo(o):n.displayName).toLowerCase().includes(vo.toLowerCase())}),[rn,zo,vo]),Do=t((function(){return So.filter(Po)}),[So,Po]),Lo=r((function(n){return!!n&&!!So.find((function(o){return o.value===n}))}),[So]),Fo=r((function(n){return Do?Do.findIndex((function(o){return o.value===n})):-1}),[Do]),Ao=r((function(n){if(Do&&Do.length>=n){var o=Do[n];return o?o.value:void 0}}),[Do]),To=r((function(){return Oo(go)?go.findIndex((function(n){var o,e;return null===(o=Dn(n))||void 0===o||null===(e=o.current)||void 0===e?void 0:e.contains(document.activeElement)})):-1}),[Dn,Oo,go]),Ro=r((function(){var n,o,e,r=null===(n=Bn.current)||void 0===n?void 0:n.contains(document.activeElement),t=null===(o=Rn.current)||void 0===o?void 0:o.contains(document.activeElement),i=Oo(go)&&go.some((function(n){var o,e;return null===(o=Dn(n))||void 0===o||null===(e=o.current)||void 0===e?void 0:e.contains(document.activeElement)})),a=function(){return Oo(go)?go.findIndex((function(n){var o,e;return null===(o=Dn(n))||void 0===o||null===(e=o.current)||void 0===e?void 0:e.contains(document.activeElement)})):-1};return Oo(go)&&i?0===a()?"FirstChip":a()===go.length-1?"LastChip":"MiddleChip":r?"Input":t?"ClearButton":null!==(e=Tn.current)&&void 0!==e&&e.contains(document.activeElement)?"Combobox":void 0}),[Dn,Oo,go]),Wo=r((function(n){var o,e=null!==(o=null==Do?void 0:Do.length)&&void 0!==o?o:0,r=e-1>0?e-1:0,t=Fo(co);switch(n&&Vn&&(Co(null),jo()),n){case"next":var i=Ao(t+1<e?t+1:0);uo(null!=i?i:null);break;case"prev":var a=Ao(t-1>=0?t-1:r);uo(null!=a?a:null);break;case"last":var l=Ao(r);uo(null!=l?l:null);break;case"first":default:var c=Ao(0);uo(null!=c?c:null)}}),[co,Fo,Ao,Vn,jo,null==Do?void 0:Do.length]),Bo=r((function(n,o){if(Oo(go))switch(n){case"next":var e=null!=o?o:To(),r=e+1<go.length?e+1:go.length-1,t=go[r];Co(t);break;case"prev":var i=null!=o?o:To(),a=i>0?i-1:i<0?go.length-1:0,l=go[a];Co(l);break;case"first":var c=go[0];Co(c);break;case"last":var u=go[go.length-1];Co(u);break;default:Co(null)}}),[To,Oo,go]),Go=r((function(n,o){n&&uo(null);var e=Ro();switch(n){case"right":switch(e){case"Input":var r,t,i;if((null===(r=Bn.current)||void 0===r?void 0:r.selectionEnd)===(null===(t=Bn.current)||void 0===t?void 0:t.value.length))null===(i=Rn.current)||void 0===i||i.focus();break;case"LastChip":o.preventDefault(),jo(0),Bo(null);break;case"FirstChip":case"MiddleChip":Bo("next")}break;case"left":switch(e){case"ClearButton":var a;o.preventDefault(),jo(null==Bn||null===(a=Bn.current)||void 0===a?void 0:a.value.length);break;case"Input":case"MiddleChip":case"LastChip":if(Oo(go)){var l;if("Input"===e&&0!==(null===(l=Bn.current)||void 0===l?void 0:l.selectionStart))break;Bo("prev")}}break;default:Bo(null)}}),[Ro,Oo,go,jo,Bo]);a((function(){vo!==yo&&Wo("first")}),[vo,Vn,yo,Wo]),a((function(){if(co){var n=Pn(co);if(n&&n.current&&Gn.current){var o=n.current.offsetTop,e=Gn.current,r=e.scrollTop;(o>e.offsetHeight||o<r)&&(Gn.current.scrollTop=o)}}}),[co,Pn]);var Ko=r((function(o){return n.Children.map(o,(function(n){if(P(n,"ComboboxOption")){var o=dn(n.props),e=o.value,r=o.displayName;if(Po(e)){var t=n.props,i=t.className,a=t.glyph,l=So.findIndex((function(n){return n.value===e})),c=co===e,u=Oo(go)?go.includes(e):go===e,s=Pn(e);return T(fn,{value:e,displayName:r,isFocused:c,isSelected:u,setSelected:function(){uo(e),Mo(e),jo(),e===go&&$o()},glyph:a,className:i,index:l,ref:s})}}else if(P(n,"ComboboxGroup")){var d=Ko(n.props.children);if(d&&(null==d?void 0:d.length)>0)return T(so,{label:n.props.label,className:n.props.className},Ko(d))}}))}),[So,co,Pn,Oo,Po,go,jo,Mo]),Vo=t((function(){return Ko(e)}),[e,Ko]),Ho=t((function(){if(Oo(go))return go.filter(Lo).map((function(n,o){var e=zo(n),r=ko===n,t=Dn(n);return T(Hn,{key:n,displayName:e,isFocused:r,onRemove:function(){Bo("next",o),Mo(n)},onFocus:function(){Co(n)},ref:t})}))}),[Oo,go,Lo,zo,ko,Dn,Bo,Mo]),Uo=t((function(){return T(n.Fragment,null,ln&&No&&T(M,{"aria-label":"Clear selection","aria-disabled":L,disabled:L,ref:Rn,onClick:function(n){L||(Mo(null),null==sn||sn(n),null==tn||tn(""),Vn||qo())},onFocus:re,className:_n},T(O,{glyph:"XWithCircle"})),T(O,"error"===X?{glyph:"Warning",color:z.red.base,className:oo}:{glyph:"CaretDown",className:oo}))}),[ln,No,L,X,Mo,sn,tn,Vn]),Xo=t((function(){return So.some((function(n){return n.hasGlyph}))}),[So]),Zo=r((function(){if(!Oo(go)&&go===fo){var n=Do.find((function(n){return n.displayName===vo||n.value===vo}));if(n&&!yn)mo(n.value);else{var o,e=null!==(o=zo(go))&&void 0!==o?o:"";xo(e)}}}),[zo,vo,Oo,fo,go,yn,Do]),Yo=r((function(){if(No){if(Oo(go))Eo();else if(!Oo(go)){var n,o=null!==(n=zo(go))&&void 0!==n?n:"";xo(o),$o()}}else xo("")}),[No,zo,Oo,go]);a((function(){if(vn)if(u(vn)){var n,o=null!==(n=vn.filter((function(n){return Lo(n)})))&&void 0!==n?n:[];mo(o)}else Lo(vn)&&mo(vn);else mo(function(n){return n?[]:null}(hn))}),[]),a((function(){if(!b(yn)&&yn!==yo)if(s(yn))mo(null);else if(Oo(yn)){var n=yn.filter(Lo);mo(n)}else mo(Lo(yn)?yn:null)}),[Oo,Lo,yo,yn]),a((function(){g(go,fo)||Yo()}),[Yo,fo,go]),a((function(){Vn||Xn===Vn||Zo()}),[Vn,Xn,Zo]);var $o=function(){return Un(!1)},qo=function(){return Un(!0)},Jo=Z(l(0),2),Qo=Jo[0],_o=Jo[1];a((function(){var n,o;_o(null!==(n=null===(o=Tn.current)||void 0===o?void 0:o.clientWidth)&&void 0!==n?n:0)}),[Tn,Vn,co,go]);var ne=t((function(){switch(q){case"loading":return T("span",{className:lo},T(O,{glyph:"Refresh",color:z.blue.base,className:ro}),en);case"error":return T("span",{className:lo},T(O,{glyph:"Warning",color:z.red.base}),nn);case"unset":default:return Vo&&Vo.length>0?T("ul",{className:ao},Vo):T("span",{className:lo},Q)}}),[Vo,Q,nn,en,q]),oe=k(),ee=t((function(){if(oe&&Tn.current&&Gn.current){var n=Tn.current.getBoundingClientRect(),o=n.top,e=n.bottom,r=Math.max(oe.height-e,o);return Math.min(274,r-8)}return 274}),[oe,Tn,Gn]);a((function(){}),[co]);var re=function(){uo(null)};C("mousedown",(function(n){var o,e,r=n.target;(null===(o=Gn.current)||void 0===o?void 0:o.contains(r))||(null===(e=Tn.current)||void 0===e?void 0:e.contains(r))||!1||Un(!1)}));var te=G({popoverZIndex:Sn},jn?{usePortal:jn,portalClassName:Mn,portalContainer:En,scrollContainer:In}:{usePortal:jn});return T(cn.Provider,{value:{multiselect:hn,darkMode:B,size:R,withIcons:Xo,disabled:L,chipTruncationLocation:wn,chipCharacterLimit:Cn,inputValue:vo}},T("div",H({className:I(Zn({darkMode:B,size:R,overflow:gn}),Nn)},zn),T("div",null,c&&T(m,{id:Fn,htmlFor:Ln},c),x&&T(f,null,x)),T(N,{className:$n,disabled:L,color:qn({state:X,darkMode:B})},T("div",{ref:Tn,role:"combobox","aria-expanded":Vn,"aria-controls":An,"aria-owns":An,tabIndex:-1,className:Yn,onMouseDown:function(n){L&&n.preventDefault()},onClick:function(n){if(n.target!==Bn.current){var o=0;if(Bn.current)o=n.nativeEvent.offsetX>Bn.current.offsetLeft+Bn.current.clientWidth?vo.length:0;jo(o)}},onFocus:function(){Eo(),qo()},onKeyDown:function(n){var o,e,r=null===(o=Gn.current)||void 0===o?void 0:o.contains(document.activeElement);if((null===(e=Tn.current)||void 0===e?void 0:e.contains(document.activeElement))||r){if(n.ctrlKey||n.shiftKey||n.altKey)return;var t=Ro();switch(n.keyCode){case un.Tab:switch(t){case"Input":No||($o(),Wo("first"),Bo(null));break;case"LastChip":Bo(null)}break;case un.Escape:$o(),Wo("first");break;case un.Enter:document.activeElement===Bn.current&&Vn&&!s(co)?Mo(co):document.activeElement===Rn.current&&(Mo(null),jo());break;case un.Backspace:var i;Oo(go)&&0===(null===(i=Bn.current)||void 0===i?void 0:i.selectionStart)?Bo("last"):qo();break;case un.ArrowDown:Vn&&n.preventDefault(),qo(),Wo("next");break;case un.ArrowUp:Vn&&n.preventDefault(),Wo("prev");break;case un.ArrowRight:Go("right",n);break;case un.ArrowLeft:Go("left",n);break;default:Vn||qo()}}},onTransitionEnd:function(){var n,o;_o(null!==(n=null===(o=Tn.current)||void 0===o?void 0:o.clientWidth)&&void 0!==n?n:0)},"data-disabled":L,"data-state":X},T("div",{ref:Wn,className:Jn({overflow:gn,isOpen:Vn,selection:go,value:vo})},Ho,T("input",{"aria-label":null!=S?S:c,"aria-autocomplete":"list","aria-controls":An,"aria-labelledby":Fn,ref:Bn,id:Ln,className:Qn,placeholder:Io,disabled:null!=L?L:void 0,onChange:function(n){var o=n.target.value;xo(o),null==tn||tn(o)},value:vo,autoComplete:"off"})),Uo)),"error"===X&&Y&&T("div",{className:no},Y),T(h,H({active:Vn&&!L,spacing:4,align:"bottom",justify:"middle",refEl:Tn,adjustOnMutation:!0,className:to({darkMode:B,size:R,width:Qo})},te),T("div",{id:An,role:"listbox","aria-labelledby":Fn,"aria-expanded":Vn,ref:Gn,className:io({maxHeight:ee}),onMouseDownCapture:function(n){return n.preventDefault()}},ne))))}export{go as Combobox,bo as ComboboxGroup,hn as ComboboxOption};
|
|
1
|
+
import n,{createContext as o,useContext as e,useCallback as r,useMemo as t,useRef as i,useEffect as l,useState as a}from"react";import{isArray as c,isNull as s,isString as u,isUndefined as b,clone as d,isEqual as g}from"lodash";import{Label as p,Description as m}from"@leafygreen-ui/typography";import f from"@leafygreen-ui/popover";import{useIdAllocator as h,useForwardedRef as v,useDynamicRefs as x,usePrevious as y,useAvailableSpace as w,useEventListener as k}from"@leafygreen-ui/hooks";import C,{isComponentGlyph as O}from"@leafygreen-ui/icon";import N from"@leafygreen-ui/icon-button";import{css as z,cx as S,keyframes as D}from"@leafygreen-ui/emotion";import{uiColors as j}from"@leafygreen-ui/palette";import{isComponentType as I,createUniqueClassName as M,keyMap as E,consoleOnce as P}from"@leafygreen-ui/lib";import T from"@leafygreen-ui/checkbox";import{jsx as A}from"@emotion/react";import F from"lodash/kebabCase";import{fontFamilies as L,typeScales as R}from"@leafygreen-ui/tokens";import H from"@leafygreen-ui/inline-definition";function W(n,o){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);o&&(r=r.filter((function(o){return Object.getOwnPropertyDescriptor(n,o).enumerable}))),e.push.apply(e,r)}return e}function G(n){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},G(n)}function K(n,o,e){return o in n?Object.defineProperty(n,o,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[o]=e,n}function U(){return U=Object.assign||function(n){for(var o=1;o<arguments.length;o++){var e=arguments[o];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r])}return n},U.apply(this,arguments)}function V(n,o){if(null==n)return{};var e,r,t=function(n,o){if(null==n)return{};var e,r,t={},i=Object.keys(n);for(r=0;r<i.length;r++)e=i[r],o.indexOf(e)>=0||(t[e]=n[e]);return t}(n,o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(r=0;r<i.length;r++)e=i[r],o.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(n,e)&&(t[e]=n[e])}return t}function B(n,o){return o||(o=n.slice(0)),Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(o)}}))}function X(n,o){return function(n){if(Array.isArray(n))return n}(n)||function(n,o){var e=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null==e)return;var r,t,i=[],l=!0,a=!1;try{for(e=e.call(n);!(l=(r=e.next()).done)&&(i.push(r.value),!o||i.length!==o);l=!0);}catch(n){a=!0,t=n}finally{try{l||null==e.return||e.return()}finally{if(a)throw t}}return i}(n,o)||Y(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z(n){return function(n){if(Array.isArray(n))return $(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||Y(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Y(n,o){if(n){if("string"==typeof n)return $(n,o);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?$(n,o):void 0}}function $(n,o){(null==o||o>n.length)&&(o=n.length);for(var e=0,r=new Array(o);e<o;e++)r[e]=n[e];return r}var q="Input",J="ClearButton",Q="FirstChip",_="LastChip",nn="MiddleChip",on="Combobox",en="Menu",rn="default",tn="large";var ln,an,cn,sn,un,bn,dn,gn,pn,mn,fn,hn,vn,xn,yn,wn,kn,Cn,On,Nn,zn,Sn,Dn,jn,In,Mn,En,Pn,Tn,An,Fn,Ln,Rn,Hn=o({multiselect:!1,darkMode:!1,size:rn,withIcons:!1,disabled:!1}),Wn=function(o,e,r){if(e&&r){var t=new RegExp(e,"gi"),i=o.matchAll(t);if(i){for(var l=o.split(""),a=0,c=Array.from(i);a<c.length;a++){var s,u=c[a],b=null!==(s=u.index)&&void 0!==s?s:-1,d=u[0],g=d.length,p=b+d+g,m=new Array(g).fill("");m[0]=n.createElement(r,{key:p},d),l.splice.apply(l,[b,g].concat(Z(m)))}return A(n.Fragment,null,l)}return A(n.Fragment,null,o)}return A(n.Fragment,null,o)},Gn=function(n){var o,e=n.value,r=n.displayName;return{value:null!=e?e:F(r),displayName:null!==(o=null!=r?r:e)&&void 0!==o?o:""}},Kn=function(n,o){if(n)return o.find((function(o){return o.value===n}))},Un=function(n,o){var e,r;return n?null!==(e=null===(r=Kn(n,o))||void 0===r?void 0:r.displayName)&&void 0!==e?e:n:""},Vn=function o(e){return n.Children.toArray(e).reduce((function(n,e){if(I(e,"ComboboxOption")){var r=Gn(e.props),t=r.value,i=r.displayName,l=e.props,a=l.glyph,c=l.disabled;return[].concat(Z(n),[{value:t,displayName:i,isDisabled:!!c,hasGlyph:!!a}])}if(I(e,"ComboboxGroup")){var s=e.props.children;if(s)return[].concat(Z(n),Z(o(s)))}}),[])},Bn=z(ln||(ln=B(["\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n list-style: none;\n color: inherit;\n cursor: pointer;\n overflow: hidden;\n font-family: ",";\n font-size: var(--lg-combobox-item-font-size);\n line-height: var(--lg-combobox-item-line-height);\n padding: var(--lg-combobox-item-padding-y) var(--lg-combobox-item-padding-x);\n\n // Left wedge\n &:before {\n content: '';\n position: absolute;\n left: 0;\n width: 3px;\n height: var(--lg-combobox-item-wedge-height);\n background-color: transparent;\n border-radius: 0 2px 2px 0;\n transform: scaleY(0.3);\n transition: 150ms ease-in-out;\n transition-property: transform, background-color;\n }\n\n &:hover {\n outline: none;\n background-color: var(--lg-combobox-item-hover-color);\n }\n\n &[aria-selected='true'] {\n outline: none;\n background-color: var(--lg-combobox-item-active-color);\n\n &:before {\n background-color: var(--lg-combobox-item-wedge-color);\n transform: scaleY(1);\n }\n }\n"])),L.legacy),Xn=z(an||(an=B(["\n cursor: not-allowed;\n color: ",";\n\n &:hover {\n background-color: inherit;\n }\n"])),j.gray.base),Zn=z(cn||(cn=B(["\n display: inline-flex;\n gap: 8px;\n justify-content: start;\n align-items: inherit;\n overflow-wrap: anywhere;\n"]))),Yn=z(sn||(sn=B(["\n pointer-events: none;\n"]))),$n=function(n){return z(un||(un=B(["\n font-weight: ",";\n"])),n?"bold":"normal")},qn=n.forwardRef((function(o,i){var l=o.displayName,a=o.glyph,c=o.isSelected,s=o.isFocused,u=o.disabled,b=o.setSelected,d=o.className,g=e(Hn),p=g.multiselect,m=g.darkMode,f=g.withIcons,x=g.inputValue,y=h({prefix:"combobox-option-text"}),w=v(i,null),k=r((function(n){n.stopPropagation(),u||n.target!==w.current&&"INPUT"!==n.target.tagName||b()}),[u,w,b]),N=t((function(){if(a){if(O(a)||I(a,"Icon"))return a;console.error("`ComboboxOption` instance did not render icon because it is not a known glyph element.",a)}}),[a]),z=t((function(){if(p){var o=A(T,{label:"","aria-labelledby":y,checked:c,tabIndex:-1,animate:!1,disabled:u});return A(n.Fragment,null,A("span",{className:S(Zn,Yn)},f?N:o,A("span",{id:y,className:$n(c)},Wn(l,x,"strong"))),f&&o)}return A(n.Fragment,null,A("span",{className:S(Zn,Yn)},N,A("span",{className:$n(c)},Wn(l,x,"strong"))),c&&A(C,{glyph:"Checkmark",color:m?j.blue.light1:j.blue.base}))}),[p,N,c,l,x,m,y,u,f]);return A("li",{ref:w,role:"option","aria-selected":s,"aria-label":l,tabIndex:-1,className:S(Bn,K({},Xn,u),d),onClick:k,onKeyDown:k},z)}));function Jn(n){throw Error("`ComboboxOption` must be a child of a `Combobox` instance")}qn.displayName="ComboboxOption",Jn.displayName="ComboboxOption";var Qn,_n,no,oo,eo,ro,to,io,lo,ao=(K(bn={},rn,R.body1.fontSize),K(bn,tn,R.body2.fontSize),bn),co=M("combobox-chip"),so=z(dn||(dn=B(["\n font-family: ",";\n font-size: var(--lg-combobox-font-size);\n line-height: var(--lg-combobox-line-height);\n"])),L.legacy),uo=function(n){var o=n.darkMode,e=n.size,r=n.overflow;return S(function(n){return n?z(gn||(gn=B([""]))):z(pn||(pn=B(["\n --lg-combobox-color-error: ",";\n --lg-combobox-text-color: ",";\n --lg-combobox-text-color-disabled: ",";\n\n --lg-combobox-background-color: ",";\n --lg-combobox-background-color-focus: ",";\n --lg-combobox-background-color-disabled: ",";\n\n --lg-combobox-border-color: ",";\n --lg-combobox-border-color-disabled: ",";\n --lg-combobox-border-color-error: ",";\n\n --lg-combobox-shadow: 0px 1px 2px rgba(6, 22, 33, 0.3);\n --lg-combobox-shadow-focus: 0px 4px 4px rgba(6, 22, 33, 0.3);\n "])),j.red.base,j.gray.dark3,j.gray.dark1,j.gray.light3,j.white,j.gray.light2,j.gray.base,j.gray.light1,j.red.base)}(o),function(n){switch(n){case rn:return z(mn||(mn=B(["\n --lg-combobox-padding-y: 5px;\n --lg-combobox-padding-x: 7px;\n --lg-combobox-height: calc(\n 36px - 2px - 2 * var(--lg-combobox-padding-y)\n );\n --lg-combobox-font-size: ","px; // TODO: update this for redesign\n --lg-combobox-line-height: ","px;\n "])),R.body1.fontSize+1,R.body1.lineHeight+1);case tn:return z(fn||(fn=B(["\n --lg-combobox-padding-y: 9px;\n --lg-combobox-padding-x: 11px;\n --lg-combobox-height: calc(\n 48px - 2px - 2 * var(--lg-combobox-padding-y)\n );\n --lg-combobox-font-size: ","px;\n --lg-combobox-line-height: ","px;\n "])),R.body2.fontSize,R.body2.lineHeight)}}(e),z(hn||(hn=B(["\n --lg-combobox-icon-height: 16px;\n --lg-combobox-border-radius: 3px;\n --lg-combobox-width: ",";\n --lg-combobox-padding: var(--lg-combobox-padding-y)\n var(--lg-combobox-padding-x) var(--lg-combobox-padding-y)\n ",";\n width: var(--lg-combobox-width);\n // TODO: Clean this up 🤮\n min-width: calc(\n ","px + var(--lg-combobox-padding-x) * 2 + 2px +\n var(--lg-combobox-icon-height)\n );\n "])),"expand-x"===r?"unset":"100%","scroll-x"===r?"0":"var(--lg-combobox-padding-x)",ao[e]))},bo=z(vn||(vn=B(["\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n padding: var(--lg-combobox-padding);\n color: var(--lg-combobox-text-color);\n background-color: var(--lg-combobox-background-color);\n box-shadow: var(--lg-combobox-shadow);\n border: 1px solid var(--lg-combobox-border-color);\n border-radius: var(--lg-combobox-border-radius);\n width: var(--lg-combobox-width);\n cursor: text;\n transition: 150ms ease-in-out;\n transition-property: background-color, box-shadow, border-color;\n\n &[data-disabled='true'] {\n color: var(--lg-combobox-text-color-disabled);\n background-color: var(--lg-combobox-background-color-disabled);\n border-color: var(--lg-combobox-border-color-disabled);\n box-shadow: unset;\n cursor: not-allowed;\n }\n\n &[data-state='error'] {\n border-color: var(--lg-combobox-border-color-error);\n }\n"]))),go=z(xn||(xn=B(["\n &:focus-within {\n border-color: transparent;\n background-color: var(--lg-combobox-background-color-focus);\n // TODO: Remove for UI refresh & Darkmode\n box-shadow: 0 0 0 3px ",", var(--lg-combobox-shadow-focus);\n }\n"])),j.focus),po=function(n){var o,e=n.overflow,r=n.isOpen,t=n.selection,i=n.size,l=n.value,a=c(t)&&t.length>0,s=null!==(o=null==l?void 0:l.length)&&void 0!==o?o:0,u=z(yn||(yn=B(["\n flex-grow: 1;\n width: var(--lg-combobox-width);\n\n --lg-combobox-input-width: ",";\n --lg-combobox-input-min-width: ","px;\n "])),a?"".concat(s*ao[i],"px"):"100%",ao[i]);switch(e){case"scroll-x":return z(wn||(wn=B(["\n ","\n display: block;\n height: var(--lg-combobox-height);\n white-space: nowrap;\n overflow-x: scroll;\n padding-left: var(--lg-combobox-padding-x);\n scroll-behavior: smooth;\n scrollbar-width: none;\n /*\n * Immediate transition in, slow transition out. \n * '-in' transition is handled by `scroll-behavior` \n */\n --lg-combobox-input-transition: width ease-in-out\n ",";\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n & > ."," {\n margin-inline: 2px;\n\n &:first-child {\n margin-inline-start: 0;\n }\n\n &:last-child {\n margin-inline-end: 0;\n }\n }\n "],["\n ","\n display: block;\n height: var(--lg-combobox-height);\n white-space: nowrap;\n overflow-x: scroll;\n padding-left: var(--lg-combobox-padding-x);\n scroll-behavior: smooth;\n scrollbar-width: none;\n /*\n * Immediate transition in, slow transition out. \n * '-in' transition is handled by \\`scroll-behavior\\` \n */\n --lg-combobox-input-transition: width ease-in-out\n ",";\n\n &::-webkit-scrollbar {\n display: none;\n }\n\n & > ."," {\n margin-inline: 2px;\n\n &:first-child {\n margin-inline-start: 0;\n }\n\n &:last-child {\n margin-inline-end: 0;\n }\n }\n "])),u,r?"0":"100ms",co);case"expand-x":return z(kn||(kn=B(["\n ","\n display: flex;\n gap: 4px;\n flex-wrap: nowrap;\n white-space: nowrap;\n height: var(--lg-combobox-height);\n --lg-combobox-input-transition: none;\n "])),u);case"expand-y":return z(Cn||(Cn=B(["\n ","\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n overflow-x: visible;\n min-height: var(--lg-combobox-height);\n "])),u)}},mo=z(On||(On=B(["\n border: none;\n cursor: inherit;\n background-color: inherit;\n box-sizing: content-box;\n padding: 0;\n margin: 0;\n text-overflow: ellipsis;\n font-size: var(--lg-combobox-font-size);\n line-height: var(--lg-combobox-line-height);\n height: var(--lg-combobox-height);\n width: var(--lg-combobox-input-width, 0);\n min-width: var(--lg-combobox-input-min-width);\n transition: var(--lg-combobox-input-transition);\n\n &:focus {\n outline: none;\n }\n"]))),fo=z(Nn||(Nn=B(["\n // Add a negative margin so the button takes up the same space as the regular icons\n margin-block: calc(var(--lg-combobox-icon-height) / 2 - 100%);\n"]))),ho=z(zn||(zn=B(["\n &:focus {\n box-shadow: unset;\n &::before {\n background-color: ",";\n }\n }\n"])),j.blue.light2),vo=z(Sn||(Sn=B(["\n font-size: var(--lg-combobox-font-size);\n line-height: var(--lg-combobox-line-height);\n color: var(--lg-combobox-color-error);\n padding-top: var(--lg-combobox-padding-y);\n"]))),xo=z(Dn||(Dn=B(["\n margin-inline-end: calc(var(--lg-combobox-padding-x) / 2);\n"]))),yo=D(jn||(jn=B(["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"]))),wo=z(In||(In=B(["\n animation: "," 1.5s linear infinite;\n"])),yo),ko=function(n){var o,e,r=n.darkMode,t=n.size,i=n.width,l=void 0===i?384:i;switch(o=r?z(Mn||(Mn=B([""]))):z(En||(En=B(["\n --lg-combobox-menu-color: ",";\n --lg-combobox-menu-message-color: ",";\n --lg-combobox-menu-background-color: ",";\n --lg-combobox-menu-shadow: 0px 3px 7px rgba(0, 0, 0, 0.25);\n --lg-combobox-item-hover-color: ",";\n --lg-combobox-item-active-color: ",";\n --lg-combobox-item-wedge-color: ",";\n "])),j.gray.dark3,j.gray.dark1,j.white,j.gray.light2,j.blue.light3,j.blue.base),t){case rn:e=z(Pn||(Pn=B(["\n --lg-combobox-menu-border-radius: 4px;\n --lg-combobox-item-height: 36px;\n --lg-combobox-item-padding-y: 8px;\n --lg-combobox-item-padding-x: 12px;\n --lg-combobox-item-font-size: ","px; // TODO: update this\n --lg-combobox-item-line-height: ","px; // TODO: update this\n --lg-combobox-item-wedge-height: 22px;\n "])),R.body1.fontSize+1,R.body1.lineHeight+1);break;case tn:e=z(Tn||(Tn=B(["\n --lg-combobox-menu-border-radius: 4px;\n --lg-combobox-item-height: 36px;\n --lg-combobox-item-padding-y: 8px;\n --lg-combobox-item-padding-x: 12px;\n --lg-combobox-item-font-size: ","px; // TODO: update this\n --lg-combobox-item-line-height: ","px; // TODO: update this\n --lg-combobox-item-wedge-height: 22px;\n "])),R.body2.fontSize+1,R.body2.lineHeight+1)}return S(o,e,z(An||(An=B(["\n width: ","px;\n border-radius: var(--lg-combobox-menu-border-radius);\n\n & > * {\n border-radius: inherit;\n }\n "])),l))},Co=function(n){var o=n.maxHeight;return z(Fn||(Fn=B(["\n position: relative;\n width: 100%;\n margin: 0;\n padding: 0;\n font-family: ",";\n color: var(--lg-combobox-menu-color);\n background-color: var(--lg-combobox-menu-background-color);\n box-shadow: var(--lg-combobox-menu-shadow);\n border-radius: inherit;\n overflow: auto;\n min-height: var(--lg-combobox-item-height);\n max-height: ","px;\n scroll-behavior: smooth;\n"])),L.default,o)},Oo=z(Ln||(Ln=B(["\n position: relative;\n margin: 0;\n padding: 0;\n"]))),No=z(Rn||(Rn=B(["\n display: inline-flex;\n align-items: center;\n gap: 8px;\n font-size: var(--lg-combobox-item-font-size);\n color: var(--lg-combobox-menu-message-color);\n padding: var(--lg-combobox-item-padding-y) var(--lg-combobox-item-padding-x);\n\n & > svg {\n width: 1em;\n height: 1em;\n }\n"]))),zo=function(n){var o,e,r=n.darkMode,t=n.size;switch(o=r?z(Qn||(Qn=B([""]))):z(_n||(_n=B(["\n --lg-combobox-chip-text-color: ",";\n --lg-combobox-chip-icon-color: ",";\n --lg-combobox-chip-background-color: ",";\n --lg-combobox-chip-hover-color: ",";\n --lg-combobox-chip-focus-color: ",";\n "])),j.gray.dark3,j.gray.dark2,j.gray.light2,j.gray.light1,j.blue.light2),t){case rn:e=z(no||(no=B(["\n --lg-combobox-chip-height: 24px;\n --lg-combobox-chip-border-radius: 4px;\n --lg-combobox-chip-font-size: 14px;\n --lg-combobox-chip-line-height: 20px;\n --lg-combobox-chip-padding-x: 6px;\n "])));break;case tn:e=z(oo||(oo=B(["\n --lg-combobox-chip-height: 28px;\n --lg-combobox-chip-border-radius: 4px;\n --lg-combobox-chip-font-size: ","px;\n --lg-combobox-chip-line-height: ","px;\n --lg-combobox-chip-padding-x: 6px;\n "])),R.body2.fontSize,R.body2.lineHeight)}return S(o,e,z(eo||(eo=B(["\n display: inline-flex;\n align-items: center;\n overflow: hidden;\n white-space: nowrap;\n height: var(--lg-combobox-chip-height);\n font-size: var(--lg-combobox-chip-font-size);\n line-height: var(--lg-combobox-chip-line-height);\n border-radius: var(--lg-combobox-chip-border-radius);\n color: var(--lg-combobox-chip-text-color);\n background-color: var(--lg-combobox-chip-background-color);\n\n // TODO - refine these styles\n /* &:focus, */\n &:focus-within {\n background-color: var(--lg-combobox-chip-focus-color);\n }\n "]))))},So=z(ro||(ro=B(["\n padding-inline: var(--lg-combobox-chip-padding-x);\n"]))),Do=z(to||(to=B(["\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n outline: none;\n border: none;\n background-color: transparent;\n color: var(--lg-combobox-chip-icon-color);\n cursor: pointer;\n transition: background-color 100ms ease-in-out;\n\n &:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 1px;\n background-color: var(--lg-combobox-chip-hover-color);\n }\n\n &:hover {\n background-color: var(--lg-combobox-chip-hover-color);\n }\n"]))),jo=n.forwardRef((function(n,o){var r=n.displayName,a=n.isFocused,c=n.onRemove,s=n.onFocus,u=e(Hn),b=u.darkMode,d=u.size,g=u.disabled,p=u.chipTruncationLocation,m=void 0===p?"end":p,f=u.chipCharacterLimit,h=void 0===f?12:f,v=!!h&&!!m&&"none"!==m&&r.length>h,x=i(null),y=t((function(){if(v){var n=h-3;switch(m){case"start":return"…"+r.substring(r.length-n).trim();case"middle":return r.substring(0,n/2).trim()+"…"+r.substring(r.length-n/2).trim();case"end":return r.substring(0,n).trim()+"…";default:return r}}return!1}),[h,m,r,v]);l((function(){var n;a&&!g&&(null==x||null===(n=x.current)||void 0===n||n.focus())}),[g,o,a]);return A("span",{role:"option","aria-selected":a,"data-testid":"lg-combobox-chip",ref:o,className:S(co,zo({darkMode:b,size:d})),onClick:function(n){var o;null!==(o=x.current)&&void 0!==o&&o.contains(n.target)||s()},onKeyDown:function(n){g||n.keyCode!==E.Delete&&n.keyCode!==E.Backspace&&n.keyCode!==E.Enter&&n.keyCode!==E.Space||c()},tabIndex:-1},A("span",{className:So},y?A(H,{definition:r,align:"bottom"},y):r),A("button",{"aria-label":"Deselect ".concat(r),"aria-disabled":g,disabled:g,ref:x,className:Do,onClick:function(){g||c()}},A(C,{glyph:"X"})))}));jo.displayName="Chip";var Io=function(n){return z(io||(io=B(["\n --lg-combobox-group-label-color: ",";\n --lg-combobox-group-border-color: ",";\n padding-top: 8px;\n border-bottom: 1px solid var(--lg-combobox-group-border-color);\n"])),n?j.gray.light1:j.gray.dark1,n?j.gray.dark1:j.gray.light1)},Mo=z(lo||(lo=B(["\n cursor: default;\n width: 100%;\n padding: 0 12px 2px;\n outline: none;\n overflow-wrap: anywhere;\n font-size: 12px;\n line-height: 16px;\n font-weight: bold;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n color: var(--lg-combobox-group-label-color);\n"])));function Eo(o){var r=o.label,t=o.className,i=o.children,l=e(Hn).darkMode,a=h({prefix:"combobox-group"});return n.Children.count(i)>0?A("div",{className:S(Io(l),t)},A("div",{className:Mo,id:a},r),A("div",{role:"group","aria-labelledby":a},i)):A(n.Fragment,null)}function Po(n){throw Error("`ComboboxGroup` must be a child of a `Combobox` instance")}Po.displayName="ComboboxGroup";var To=["children","label","description","placeholder","aria-label","disabled","size","darkMode","state","errorMessage","searchState","searchEmptyMessage","searchErrorMessage","searchLoadingMessage","filteredOptions","onFilter","clearable","onClear","overflow","multiselect","initialValue","onChange","value","chipTruncationLocation","chipCharacterLimit","className","usePortal","portalClassName","portalContainer","scrollContainer","popoverZIndex"];function Ao(o){var e=o.children,v=o.label,O=o.description,z=o.placeholder,D=void 0===z?"Select":z,M=o["aria-label"],T=o.disabled,F=void 0!==T&&T,L=o.size,R=void 0===L?rn:L,H=o.darkMode,B=void 0!==H&&H,Z=o.state,Y=void 0===Z?"none":Z,$=o.errorMessage,tn=o.searchState,ln=void 0===tn?"unset":tn,an=o.searchEmptyMessage,cn=void 0===an?"No results found":an,sn=o.searchErrorMessage,un=void 0===sn?"Could not get results!":sn,bn=o.searchLoadingMessage,dn=void 0===bn?"Loading results...":bn,gn=o.filteredOptions,pn=o.onFilter,mn=o.clearable,fn=void 0===mn||mn,hn=o.onClear,vn=o.overflow,xn=void 0===vn?"expand-y":vn,yn=o.multiselect,wn=void 0!==yn&&yn,kn=o.initialValue,Cn=o.onChange,On=o.value,Nn=o.chipTruncationLocation,zn=o.chipCharacterLimit,Sn=void 0===zn?12:zn,Dn=o.className,jn=o.usePortal,In=void 0===jn||jn,Mn=o.portalClassName,En=o.portalContainer,Pn=o.scrollContainer,Tn=o.popoverZIndex,An=V(o,To),Fn=x({prefix:"option"}),Ln=x({prefix:"chip"}),Rn=h({prefix:"combobox-input"}),Wn=h({prefix:"combobox-label"}),Bn=h({prefix:"combobox-menu"}),Xn=i(null),Zn=i(null),Yn=i(null),$n=i(null),Jn=i(null),Qn=X(a(!1),2),_n=Qn[0],no=Qn[1],oo=y(_n),eo=X(a(null),2),ro=eo[0],to=eo[1],io=X(a(null),2),lo=io[0],ao=io[1],co=y(lo),yo=X(a(""),2),zo=yo[0],So=yo[1],Do=y(zo),Io=X(a(null),2),Mo=Io[0],Po=Io[1],Ao=!s(lo)&&(c(lo)&&lo.length>0||u(lo)),Fo=wn&&c(lo)&&lo.length>0?void 0:D,Lo=function(){return no(!1)},Ro=function(){return no(!0)},Ho=t((function(){return Vn(e)}),[e]),Wo=r((function(n){return!wn||"string"!=typeof n&&"number"!=typeof n?!wn&&c(n)&&P.error("Error in Combobox: multiselect is set to `false`, but recieved an Array value"):P.error("Error in Combobox: multiselect is set to `true`, but recieved a ".concat(G(n),' value: "').concat(n,'"')),wn&&c(n)}),[wn]),Go=r((function(n){!F&&$n&&$n.current&&($n.current.focus(),b(n)||$n.current.setSelectionRange(n,n))}),[F]),Ko=r((function(n){if(Wo(lo)){var o=d(lo);s(n)?o.length=0:lo.includes(n)?o.splice(o.indexOf(n),1):(o.push(n),So("")),ao(o),null==Cn||Cn(o)}else{var e=n;ao(e),null==Cn||Cn(e)}}),[Wo,Cn,lo]),Uo=r((function(n){return Wo(lo)?lo.includes(n):n===lo}),[Wo,lo]),Vo=r((function(n){var o,e,r,t,i=(e=Ho,(o=n)?null!==(r=null===(t=e.find((function(n){return n.displayName===o})))||void 0===t?void 0:t.value)&&void 0!==r?r:o:"");return Uo(i)}),[Ho,Uo]),Bo=r((function(n){var o="string"==typeof n?n:n.value;return gn&&gn.length>0?gn.includes(o):!!Vo(zo)||("string"==typeof n?Un(o,Ho):n.displayName).toLowerCase().includes(zo.toLowerCase())}),[gn,Vo,zo,Ho]),Xo=t((function(){return Ho.filter(Bo)}),[Ho,Bo]),Zo=r((function(n){return!!n&&!!Ho.find((function(o){return o.value===n}))}),[Ho]),Yo=r((function(n){return Xo?Xo.findIndex((function(o){return o.value===n})):-1}),[Xo]),$o=r((function(n){if(Xo&&Xo.length>=n){var o=Xo[n];return o?o.value:void 0}}),[Xo]),qo=r((function(){return Wo(lo)?lo.findIndex((function(n){var o,e;return null===(o=Ln(n))||void 0===o||null===(e=o.current)||void 0===e?void 0:e.contains(document.activeElement)})):-1}),[Ln,Wo,lo]),Jo=X(a(),2),Qo=Jo[0],_o=Jo[1],ne=r((function(n){var o,e=null!==(o=null==Xo?void 0:Xo.length)&&void 0!==o?o:0,r=e-1>0?e-1:0,t=Yo(ro);switch(n&&_n&&(Po(null),Go()),n){case"next":var i=$o(t+1<e?t+1:0);to(null!=i?i:null);break;case"prev":var l=$o(t-1>=0?t-1:r);to(null!=l?l:null);break;case"last":var a=$o(r);to(null!=a?a:null);break;default:var c=$o(0);to(null!=c?c:null)}}),[ro,Yo,$o,_n,Go,null==Xo?void 0:Xo.length]),oe=r((function(n,o){if(Wo(lo))switch(n){case"next":var e=null!=o?o:qo(),r=e+1<lo.length?e+1:lo.length-1,t=lo[r];Po(t);break;case"prev":var i=null!=o?o:qo(),l=i>0?i-1:i<0?lo.length-1:0,a=lo[l];Po(a);break;case"first":var c=lo[0];Po(c);break;case"last":var s=lo[lo.length-1];Po(s);break;default:Po(null)}}),[qo,Wo,lo]),ee=r((function(n,o){switch(n&&to(null),n){case"right":switch(Qo){case q:var e,r,t;if((null===(e=$n.current)||void 0===e?void 0:e.selectionEnd)===(null===(r=$n.current)||void 0===r?void 0:r.value.length))null===(t=Zn.current)||void 0===t||t.focus();break;case Q:case nn:case _:if(Qo===_||1===(null==lo?void 0:lo.length)){Go(0),oe(null),o.preventDefault();break}oe("next")}break;case"left":switch(Qo){case J:var i;o.preventDefault(),Go(null==$n||null===(i=$n.current)||void 0===i?void 0:i.value.length);break;case q:case nn:case _:if(Wo(lo)){var l;if(Qo===q&&0!==(null===(l=$n.current)||void 0===l?void 0:l.selectionStart))break;oe("prev")}}break;default:oe(null)}}),[Qo,Wo,lo,Go,oe]);l((function(){zo!==Do&&ne("first")}),[zo,_n,Do,ne]),l((function(){if(ro){var n=Fn(ro);if(n&&n.current&&Jn.current){var o=n.current.offsetTop,e=Jn.current,r=e.scrollTop;(o>e.offsetHeight||o<r)&&(Jn.current.scrollTop=o)}}}),[ro,Fn]);var re=r((function(o){return n.Children.map(o,(function(n){if(I(n,"ComboboxOption")){var o=Gn(n.props),e=o.value,r=o.displayName;if(Bo(e)){var t=n.props,i=t.className,l=t.glyph,a=t.disabled,c=Ho.findIndex((function(n){return n.value===e})),s=ro===e,u=Wo(lo)?lo.includes(e):lo===e,b=Fn(e);return A(qn,{value:e,displayName:r,isFocused:s,isSelected:u,disabled:a,setSelected:function(){to(e),Ko(e),Go(),e===lo&&Lo()},glyph:l,className:i,index:c,ref:b})}}else if(I(n,"ComboboxGroup")){var d=re(n.props.children);if(d&&(null==d?void 0:d.length)>0)return A(Eo,{label:n.props.label,className:n.props.className},re(d))}}))}),[Ho,ro,Fn,Wo,Bo,lo,Go,Ko]),te=t((function(){return re(e)}),[e,re]),ie=t((function(){if(Wo(lo))return lo.filter(Zo).map((function(n,o){var e=Un(n,Ho),r=Mo===n,t=Ln(n),i=o>=lo.length-1;return A(jo,{key:n,displayName:e,isFocused:r,onRemove:function(){i?(Go(),oe(null)):oe("next",o),Ko(n)},onFocus:function(){Po(n)},ref:t})}))}),[Wo,lo,Zo,Ho,Mo,Ln,Ko,Go,oe]),le=t((function(){return A(n.Fragment,null,fn&&Ao&&A(N,{"aria-label":"Clear selection","aria-disabled":F,disabled:F,ref:Zn,onClick:function(n){F||(Ko(null),null==hn||hn(n),null==pn||pn(""),_n||Ro())},onFocus:me,className:S(fo,ho)},A(C,{glyph:"XWithCircle"})),A(C,"error"===Y?{glyph:"Warning",color:j.red.base,className:xo}:{glyph:"CaretDown",className:xo}))}),[fn,Ao,F,Y,Ko,hn,pn,_n]),ae=t((function(){return Ho.some((function(n){return n.hasGlyph}))}),[Ho]),ce=r((function(){if(!Wo(lo)&&lo===co){var n=Xo.find((function(n){return n.displayName===zo||n.value===zo}));if(n&&!On)ao(n.value);else{var o,e=null!==(o=Un(lo,Ho))&&void 0!==o?o:"";So(e)}}}),[Ho,zo,Wo,co,lo,On,Xo]),se=r((function(){if(Ao){if(Wo(lo))ve();else if(!Wo(lo)){var n,o=null!==(n=Un(lo,Ho))&&void 0!==n?n:"";So(o),Lo()}}else So("")}),[Ao,Ho,Wo,lo]);l((function(){if(kn)if(c(kn)){var n,o=null!==(n=kn.filter((function(n){return Zo(n)})))&&void 0!==n?n:[];ao(o)}else Zo(kn)&&ao(kn);else ao(function(n){return n?[]:null}(wn))}),[]),l((function(){if(!b(On)&&On!==Do)if(s(On))ao(null);else if(Wo(On)){var n=On.filter(Zo);ao(n)}else ao(Zo(On)?On:null)}),[Wo,Zo,Do,On]),l((function(){g(lo,co)||se()}),[se,co,lo]),l((function(){!_n&&oo&&ce()}),[_n,oo,ce]);var ue=X(a(0),2),be=ue[0],de=ue[1];l((function(){var n,o;de(null!==(n=null===(o=Xn.current)||void 0===o?void 0:o.clientWidth)&&void 0!==n?n:0)}),[Xn,_n,ro,lo]);var ge=t((function(){switch(ln){case"loading":return A("span",{className:No},A(C,{glyph:"Refresh",color:j.blue.base,className:wo}),dn);case"error":return A("span",{className:No},A(C,{glyph:"Warning",color:j.red.base}),un);default:return te&&te.length>0?A("ul",{className:Oo},te):A("span",{className:No},cn)}}),[te,cn,un,dn,ln]),pe=Math.min(256,w(Xn)),me=function(){to(null)};k("mousedown",(function(n){he(n)||(n.preventDefault(),n.stopPropagation())}),{enabled:_n}),k("click",(function(n){he(n)||(n.stopPropagation(),Lo())}),{options:{capture:!0},enabled:_n});var fe=function(n){for(var o=1;o<arguments.length;o++){var e=null!=arguments[o]?arguments[o]:{};o%2?W(Object(e),!0).forEach((function(o){K(n,o,e[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):W(Object(e)).forEach((function(o){Object.defineProperty(n,o,Object.getOwnPropertyDescriptor(e,o))}))}return n}({popoverZIndex:Tn},In?{usePortal:In,portalClassName:Mn,portalContainer:En,scrollContainer:Pn}:{usePortal:In});return A(Hn.Provider,{value:{multiselect:wn,darkMode:B,size:R,withIcons:ae,disabled:F,chipTruncationLocation:Nn,chipCharacterLimit:Sn,inputValue:zo}},A("div",U({className:S(uo({darkMode:B,size:R,overflow:xn}),Dn)},An),A("div",null,v&&A(p,{id:Wn,htmlFor:Rn,className:so},v),O&&A(m,{className:so},O)),A("div",{ref:Xn,role:"combobox","aria-expanded":_n,"aria-controls":Bn,"aria-owns":Bn,tabIndex:-1,className:S(bo,K({},go,Qo===q)),onMouseDown:function(n){F&&n.preventDefault()},onClick:function(n){if(n.target!==$n.current){var o=0;if($n.current)o=n.nativeEvent.offsetX>$n.current.offsetLeft+$n.current.clientWidth?zo.length:0;Go(o)}},onFocus:function(n){ve(),Ro(),_o(function(n){var o,e,r,t;if(!n)return;if(null!==(o=$n.current)&&void 0!==o&&o.contains(n))return q;if(null!==(e=Zn.current)&&void 0!==e&&e.contains(n))return J;var i=Wo(lo)?lo.findIndex((function(o){var e,r;return null===(e=Ln(o))||void 0===e||null===(r=e.current)||void 0===r?void 0:r.contains(n)})):-1;if(Wo(lo)){if(0===i)return Q;if(i===lo.length-1)return _;if(i>0)return nn}if(null!==(r=Jn.current)&&void 0!==r&&r.contains(n))return en;if(null!==(t=Xn.current)&&void 0!==t&&t.contains(n))return on}(n.target))},onKeyDown:function(n){var o,e,r=null===(o=Jn.current)||void 0===o?void 0:o.contains(document.activeElement);if((null===(e=Xn.current)||void 0===e?void 0:e.contains(document.activeElement))||r){if(n.ctrlKey||n.shiftKey||n.altKey)return;switch(n.keyCode){case E.Tab:switch(Qo){case"Input":Ao||(Lo(),ne("first"),oe(null));break;case"LastChip":oe(null)}break;case E.Escape:Lo(),ne("first");break;case E.Enter:!_n||Qo!==q||s(ro)||function(n){if("string"==typeof n){var o=Kn(n,Ho);return!(null==o||!o.isDisabled)}return!!n.isDisabled}(ro)?Qo===J&&(Ko(null),Go()):Ko(ro);break;case E.Backspace:var t;if(Wo(lo))"Input"===Qo&&0===(null===(t=$n.current)||void 0===t?void 0:t.selectionStart)&&oe("last");Ro();break;case E.ArrowDown:_n?(n.preventDefault(),ne("next")):Ro();break;case E.ArrowUp:_n?(n.preventDefault(),ne("prev")):Ro();break;case E.ArrowRight:ee("right",n);break;case E.ArrowLeft:ee("left",n);break;default:_n||Ro()}}},onTransitionEnd:function(){var n,o;de(null!==(n=null===(o=Xn.current)||void 0===o?void 0:o.clientWidth)&&void 0!==n?n:0)},"data-disabled":F,"data-state":Y},A("div",{ref:Yn,className:po({overflow:xn,isOpen:_n,selection:lo,size:R,value:zo})},ie,A("input",{"aria-label":null!=M?M:v,"aria-autocomplete":"list","aria-controls":Bn,"aria-labelledby":Wn,ref:$n,id:Rn,className:mo,placeholder:Fo,disabled:null!=F?F:void 0,onChange:function(n){var o=n.target.value;So(o),null==pn||pn(o)},value:zo,autoComplete:"off"})),le),"error"===Y&&$&&A("div",{className:vo},$),A(f,U({active:_n&&!F,spacing:4,align:"bottom",justify:"middle",refEl:Xn,adjustOnMutation:!0,className:ko({darkMode:B,size:R,width:be})},fe),A("div",{id:Bn,role:"listbox","aria-labelledby":Wn,"aria-expanded":_n,ref:Jn,className:Co({maxHeight:pe}),onMouseDownCapture:function(n){return n.preventDefault()}},ge))));function he(n){var o,e,r=n.target;return(null===(o=Jn.current)||void 0===o?void 0:o.contains(r))||(null===(e=Xn.current)||void 0===e?void 0:e.contains(r))||!1}function ve(){Yn&&Yn.current&&(Yn.current.scrollLeft=Yn.current.scrollWidth)}}export{Ao as Combobox,Po as ComboboxGroup,Jn as ComboboxOption};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|