@zendeskgarden/react-dropdowns 9.0.0-next.1 → 9.0.0-next.3
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/README.md +73 -69
- package/dist/index.cjs.js +1634 -1712
- package/dist/index.esm.js +1633 -1700
- package/dist/typings/context/useComboboxContext.d.ts +25 -0
- package/dist/typings/context/useFieldContext.d.ts +32 -0
- package/dist/typings/context/useItemContext.d.ts +14 -0
- package/dist/typings/context/useItemGroupContext.d.ts +15 -0
- package/dist/typings/context/useMenuContext.d.ts +23 -0
- package/dist/typings/context/useOptionContext.d.ts +14 -0
- package/dist/typings/elements/{Combobox → combobox}/Combobox.d.ts +0 -2
- package/dist/typings/elements/{Fields → combobox}/Label.d.ts +1 -1
- package/dist/typings/elements/{Menu/Items/MediaBody.d.ts → combobox/Listbox.d.ts} +2 -4
- package/dist/typings/elements/{Fields → combobox}/Message.d.ts +1 -1
- package/dist/typings/elements/{Menu/Items/HeaderItem.d.ts → combobox/OptGroup.d.ts} +2 -2
- package/dist/typings/elements/{Menu/Items/MediaItem.d.ts → combobox/Option.d.ts} +5 -2
- package/dist/typings/elements/{Menu/Items/HeaderIcon.d.ts → combobox/OptionMeta.d.ts} +1 -1
- package/dist/typings/elements/combobox/Tag.d.ts +15 -0
- package/dist/typings/elements/combobox/TagAvatar.d.ts +14 -0
- package/dist/typings/elements/combobox/TagGroup.d.ts +12 -0
- package/dist/typings/elements/combobox/utils.d.ts +38 -0
- package/dist/typings/elements/{Menu/Items → menu}/Item.d.ts +5 -2
- package/dist/typings/elements/{Menu/Items/AddItem.d.ts → menu/ItemGroup.d.ts} +2 -2
- package/dist/typings/elements/{Menu/Items → menu}/ItemMeta.d.ts +2 -2
- package/dist/typings/elements/{Menu → menu}/Menu.d.ts +0 -2
- package/dist/typings/elements/menu/MenuList.d.ts +12 -0
- package/dist/typings/elements/{Menu → menu}/Separator.d.ts +1 -1
- package/dist/typings/elements/menu/utils.d.ts +29 -0
- package/dist/typings/index.d.ts +18 -25
- package/dist/typings/types/index.d.ts +242 -121
- package/dist/typings/{styled/items/StyledItemIcon.d.ts → views/combobox/StyledCombobox.d.ts} +4 -6
- package/dist/typings/{styled/multiselect/StyledMultiselectItemWrapper.d.ts → views/combobox/StyledContainer.d.ts} +1 -1
- package/dist/typings/{styled/select/StyledSelect.d.ts → views/combobox/StyledField.d.ts} +1 -1
- package/dist/typings/views/combobox/StyledFloatingListbox.d.ts +18 -0
- package/dist/typings/views/combobox/StyledHint.d.ts +11 -0
- package/dist/typings/views/combobox/StyledInput.d.ts +20 -0
- package/dist/typings/{styled/items/StyledAddItem.d.ts → views/combobox/StyledInputGroup.d.ts} +2 -4
- package/dist/typings/views/combobox/StyledInputIcon.d.ts +20 -0
- package/dist/typings/views/combobox/StyledLabel.d.ts +11 -0
- package/dist/typings/views/combobox/StyledListbox.d.ts +17 -0
- package/dist/typings/{styled/items/StyledNextItem.d.ts → views/combobox/StyledListboxSeparator.d.ts} +2 -4
- package/dist/typings/views/combobox/StyledMessage.d.ts +11 -0
- package/dist/typings/views/combobox/StyledOptGroup.d.ts +14 -0
- package/dist/typings/views/combobox/StyledOption.d.ts +18 -0
- package/dist/typings/views/combobox/StyledOptionContent.d.ts +10 -0
- package/dist/typings/views/combobox/StyledOptionIcon.d.ts +12 -0
- package/dist/typings/views/combobox/StyledOptionMeta.d.ts +14 -0
- package/dist/typings/views/combobox/StyledOptionTypeIcon.d.ts +17 -0
- package/dist/typings/views/combobox/StyledTag.d.ts +17 -0
- package/dist/typings/views/combobox/StyledTagsButton.d.ts +16 -0
- package/dist/typings/views/combobox/StyledTrigger.d.ts +24 -0
- package/dist/typings/views/combobox/StyledValue.d.ts +21 -0
- package/dist/typings/views/index.d.ts +38 -0
- package/dist/typings/views/menu/StyledButton.d.ts +20 -0
- package/dist/typings/views/menu/StyledFloatingMenu.d.ts +13 -0
- package/dist/typings/{styled/items/StyledPreviousItem.d.ts → views/menu/StyledItem.d.ts} +4 -4
- package/dist/typings/views/menu/StyledItemContent.d.ts +13 -0
- package/dist/typings/views/menu/StyledItemGroup.d.ts +13 -0
- package/dist/typings/views/menu/StyledItemIcon.d.ts +14 -0
- package/dist/typings/{styled/items → views/menu}/StyledItemMeta.d.ts +5 -10
- package/dist/typings/views/menu/StyledItemTypeIcon.d.ts +14 -0
- package/dist/typings/views/menu/StyledMenu.d.ts +19 -0
- package/dist/typings/{styled → views}/menu/StyledSeparator.d.ts +7 -4
- package/package.json +16 -14
- package/dist/typings/elements/Autocomplete/Autocomplete.d.ts +0 -14
- package/dist/typings/elements/Dropdown/Dropdown.d.ts +0 -26
- package/dist/typings/elements/Menu/Items/MediaFigure.d.ts +0 -11
- package/dist/typings/elements/Menu/Items/NextItem.d.ts +0 -12
- package/dist/typings/elements/Menu/Items/PreviousItem.d.ts +0 -12
- package/dist/typings/elements/Multiselect/Multiselect.d.ts +0 -14
- package/dist/typings/elements/Select/Select.d.ts +0 -14
- package/dist/typings/elements/Trigger/Trigger.d.ts +0 -24
- package/dist/typings/styled/index.d.ts +0 -29
- package/dist/typings/styled/items/StyledItem.d.ts +0 -20
- package/dist/typings/styled/items/StyledNextIcon.d.ts +0 -12
- package/dist/typings/styled/items/StyledPreviousIcon.d.ts +0 -12
- package/dist/typings/styled/items/header/StyledHeaderIcon.d.ts +0 -14
- package/dist/typings/styled/items/header/StyledHeaderItem.d.ts +0 -16
- package/dist/typings/styled/items/media/StyledMediaBody.d.ts +0 -17
- package/dist/typings/styled/items/media/StyledMediaFigure.d.ts +0 -287
- package/dist/typings/styled/items/media/StyledMediaItem.d.ts +0 -13
- package/dist/typings/styled/menu/StyledMenu.d.ts +0 -20
- package/dist/typings/styled/menu/StyledMenuWrapper.d.ts +0 -16
- package/dist/typings/styled/multiselect/StyledMultiselectInput.d.ts +0 -22
- package/dist/typings/styled/multiselect/StyledMultiselectItemsContainer.d.ts +0 -16
- package/dist/typings/styled/multiselect/StyledMultiselectMoreAnchor.d.ts +0 -15
- package/dist/typings/styled/select/StyledFauxInput.d.ts +0 -22
- package/dist/typings/styled/select/StyledInput.d.ts +0 -15
- package/dist/typings/utils/garden-placements.d.ts +0 -26
- package/dist/typings/utils/useDropdownContext.d.ts +0 -28
- package/dist/typings/utils/useFieldContext.d.ts +0 -17
- package/dist/typings/utils/useItemContext.d.ts +0 -16
- package/dist/typings/utils/useMenuContext.d.ts +0 -17
- /package/dist/typings/elements/{Fields → combobox}/Field.d.ts +0 -0
- /package/dist/typings/elements/{Fields → combobox}/Hint.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
# @zendeskgarden/react-dropdowns [![npm version]
|
|
1
|
+
# @zendeskgarden/react-dropdowns [![npm version][npm version badge]][npm version link]
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[npm version badge]: https://flat.badgen.net/npm/v/@zendeskgarden/react-dropdowns
|
|
4
|
+
[npm version link]: https://www.npmjs.com/package/@zendeskgarden/react-dropdowns
|
|
5
|
+
|
|
6
|
+
This package includes components related to dropdowns in the
|
|
4
7
|
[Garden Design System](https://zendeskgarden.github.io/).
|
|
5
8
|
|
|
6
9
|
## Installation
|
|
@@ -12,85 +15,86 @@ npm install @zendeskgarden/react-dropdowns
|
|
|
12
15
|
npm install react react-dom styled-components @zendeskgarden/react-theming
|
|
13
16
|
```
|
|
14
17
|
|
|
15
|
-
##
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
### Combobox
|
|
16
21
|
|
|
17
22
|
```jsx
|
|
18
23
|
import { ThemeProvider } from '@zendeskgarden/react-theming';
|
|
19
|
-
import {
|
|
24
|
+
import { Field, Label, Combobox, Option } from '@zendeskgarden/react-dropdowns';
|
|
20
25
|
|
|
21
26
|
/**
|
|
22
27
|
* Place a `ThemeProvider` at the root of your React application
|
|
23
28
|
*/
|
|
24
29
|
<ThemeProvider>
|
|
25
|
-
<
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
</Menu>
|
|
34
|
-
</Dropdown>
|
|
30
|
+
<Field>
|
|
31
|
+
<Label>Combobox</Label>
|
|
32
|
+
<Combobox>
|
|
33
|
+
<Option value="One" />
|
|
34
|
+
<Option value="Two" />
|
|
35
|
+
<Option value="Three" />
|
|
36
|
+
</Combobox>
|
|
37
|
+
</Field>
|
|
35
38
|
</ThemeProvider>;
|
|
36
39
|
```
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
41
|
+
Beyond this basic example, Garden's `Combobox` offers a comprehensive set of
|
|
42
|
+
WAI-ARIA compliant combobox features. Key capabilities include:
|
|
43
|
+
|
|
44
|
+
- **Controllable**: The `Combobox` functions in both [uncontrolled and
|
|
45
|
+
controlled](https://react.dev/learn/sharing-state-between-components#controlled-and-uncontrolled-components)
|
|
46
|
+
modes. Controlled mode enables aspects, such as input value, selection value(s),
|
|
47
|
+
listbox expansion, and current option active index, to share and adapt to the
|
|
48
|
+
surrounding UI.
|
|
49
|
+
- **Autocomplete-able**: Denotes the `Combobox` with [list
|
|
50
|
+
autocomplete](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-list/).
|
|
51
|
+
Filtering implementation is left to the API consumer.
|
|
52
|
+
- **Selectable**: The `Combobox` API ensures the selection of one or more
|
|
53
|
+
listbox option values, while also supporting the W3C [no autocomplete
|
|
54
|
+
example](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-autocomplete-none/)
|
|
55
|
+
for use cases like search.
|
|
56
|
+
- **Multi-selectable**: This feature enables the `Combobox` to provide WAI-ARIA
|
|
57
|
+
[multi-select
|
|
58
|
+
listbox](https://www.w3.org/WAI/ARIA/apg/patterns/listbox/examples/listbox-rearrangeable/#ex2_label)
|
|
59
|
+
functionality with option-as-tag value rendering.
|
|
60
|
+
- **Non-editable**: The `Combobox` supports [select-only
|
|
61
|
+
mode](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/),
|
|
62
|
+
where the user cannot modify the `<input>`.
|
|
63
|
+
- **Filterable**: The `Combobox` offers various filtering methods for listbox
|
|
64
|
+
options. Details of the filtering implementation are left to the API consumer.
|
|
65
|
+
- **Markup-able**: The `Combobox` can convert input value text to rich HTML
|
|
66
|
+
markup on blur in single-selection mode.
|
|
67
|
+
- **Decorate-able**: The `Combobox` allows adding start and end media (SVG icons).
|
|
68
|
+
Certain features will replace end media with Garden's standard dropdown chevron
|
|
69
|
+
treatment.
|
|
70
|
+
- **Group-able**: The `Combobox` API utilizes fully accessible `<OptGroup>`
|
|
71
|
+
components for grouping, similar to the corresponding HTML element.
|
|
72
|
+
- **Compactible**: Like other form elements, the `Combobox` supports compact
|
|
73
|
+
sizing.
|
|
74
|
+
- **Field-able**: The `Combobox` builds on Garden’s Field API context to
|
|
75
|
+
establish accessible relationships with corresponding Label, Hint, and Message
|
|
76
|
+
components.
|
|
77
|
+
- **Validate-able**: The `Combobox` provides validation styling and
|
|
78
|
+
accessibility comparable to other Garden form components.
|
|
79
|
+
- **RTL theme-able**: Functionality displays and operates correctly for
|
|
80
|
+
left-to-right and right-to-left layouts.
|
|
81
|
+
|
|
82
|
+
### Menu
|
|
62
83
|
|
|
63
84
|
```jsx
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<Item value="item-1">Item 1</Item>
|
|
67
|
-
<Item value="item-2">Item 2</Item>
|
|
68
|
-
<Item value="item-3">Item 3</Item>
|
|
69
|
-
</Menu>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Dropdown State
|
|
73
|
-
|
|
74
|
-
We use the [Downshift](https://github.com/downshift-js/downshift) render-prop library to
|
|
75
|
-
handle our keyboard and accessibility logic.
|
|
76
|
-
|
|
77
|
-
The following states can be controlled directly from the `<Dropdown>` component:
|
|
78
|
-
|
|
79
|
-
- **isOpen** Whether the dropdown is currently open
|
|
80
|
-
- **highlightedIndex** Which index is currently highlighted
|
|
81
|
-
- **inputValue** The value of the input when it's used as an `Autocomplete`
|
|
82
|
-
- **selectedItem** The currently selected item
|
|
83
|
-
- **selectedItems** The currently selected items
|
|
84
|
-
|
|
85
|
-
All other customizations may be provided directly to the Downshift provider
|
|
86
|
-
via the `downshiftProps` prop.
|
|
87
|
-
|
|
88
|
-
Downshift provides several advanced customization features that can be very helpful when
|
|
89
|
-
customizing this component. The [stateReducer](https://github.com/downshift-js/downshift#statereducer)
|
|
90
|
-
pattern is a common customization strategy.
|
|
85
|
+
import { ThemeProvider } from '@zendeskgarden/react-theming';
|
|
86
|
+
import { Menu, Item } from '@zendeskgarden/react-dropdowns';
|
|
91
87
|
|
|
92
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Place a `ThemeProvider` at the root of your React application
|
|
90
|
+
*/
|
|
91
|
+
<ThemeProvider>
|
|
92
|
+
<Menu button="Choose an item">
|
|
93
|
+
<Item value="item-01" label="One" />
|
|
94
|
+
<Item value="item-02" label="Two" />
|
|
95
|
+
<Item value="item-03" label="Three" />
|
|
96
|
+
</Menu>
|
|
97
|
+
</ThemeProvider>;
|
|
98
|
+
```
|
|
93
99
|
|
|
94
|
-
|
|
95
|
-
This package re-exports the Downshift `resetIdCounter` utility. It allows resetting the internal id
|
|
96
|
-
counter which is used to generate unique ids for Downshift.
|
|
100
|
+
Visit [storybook](https://zendeskgarden.github.io/react-components) for live examples.
|